Python实用记录(四):os模块-去后缀或者改后缀/指定目录下图片或者子目录图片写入txt/csv

简介: 本文介绍了如何使用Python的os模块来操作文件,包括更改文件后缀、分割文件路径和后缀、将指定目录下的所有图片写入txt文档,以及将指定目录下所有子目录中的图片写入csv文档,并为每个子目录分配一个标签。

1.改后缀

这个代码是指定路径,但是里面的具体文件名不知道,能够罗列所有的指定文件名和修改后缀,如果要获取具体路径下的文件文件名和后缀看下面这个目录

import os
def read_evr_yuc(file_path):
    dirpaths=os.listdir(file_path)
    yuv_name=[]
    name=[]
    new_name=[]
    for i in dirpaths:
        yuv_name.append(i)
        portion=os.path.splitext(i) #把文件名拆分为名字和后缀
        if portion[1] == ".yuv": #指定里面所有yuv的后缀的文件
            newname = portion[0] + ".code"
            new_name.append(newname)
            name.append(portion[0])
    print(yuv_name)
    print(name)
    print(new_name)    

if __name__ == '__main__':
    file_path='D:/pycharm/match/huffman/yuc_file/'
    read_evr_yuc(file_path)

2.划分路径和文件名、后缀名

#########start 获取文件路径、文件名、后缀名############
def get_splitfile(filename):
    (filepath,tempfilename) = os.path.split(filename)
    (shotname,extension) = os.path.splitext(tempfilename)
    print(filepath)
    print(shotname)
    print(extension)
    return filepath,shotname,extension
#########end 获取文件路径、文件名、后缀名############

path='F:/Dataset/cool/1.jpg'
get_splitfile(path)

3.指定目录下所有的图片写入到txt文档

"""把指定目录下所有的图片写入到txt文档中"""
import os
img_path='F:/pycharm/Pytorch2TensorRT-master/face/'
txtfile='F:/pycharm/Pytorch2TensorRT-master/my_files/face.txt'
os.makedirs(os.path.dirname(txtfile),exist_ok=True)
dirpaths=os.listdir(img_path)
f=open(txtfile,'w')
for dirpath in dirpaths:
    # print(dirpath)
    path=os.path.join(img_path,dirpath)
    print(path)
    f.write(path+'\n')

4.指定目录下所有的子目录(写上对应的label)对应的所有图片写入到csv文档

import os,glob,cv2,random,csv
def work():
    name2label = {}
    path='pokemon/'
    for name in sorted(os.listdir(os.path.join(path))):
        # 得到全部子目录
        if not os.path.isdir(os.path.join(path, name)):
            # 用于判断对象是否为一个目录
            continue
        name2label[name] = len(name2label.keys())
    print(name2label)
    images = []
    for name in name2label.keys():
        images += glob.glob(os.path.join(path, name, '*.png'))
        images += glob.glob(os.path.join(path, name, '*.jpg'))
        images += glob.glob(os.path.join(path, name, '*.jpeg'))
    # print(len(images), images)
    random.shuffle(images)
    with open(os.path.join(path, 'face.csv'), mode='w', newline='') as f:
        writer = csv.writer(f)
        for img in images:  # 'pokemon\\bulbasaur\\00000000.png' os.sep不用距离根据\\和/进行划分
            print(img)
            img=img.replace('\\','/') # 将里面的\换/
            # name = img.split(os.sep)[-2]
            (filepath, tempfilename) = os.path.split(img) # 获取路径、图片文件名
            (filepath1, tempfilename1) = os.path.split(filepath) # 获取剩余路径下的文件路径、文件名
            (filename, extension) = os.path.splitext(tempfilename1) # 获取文件路径、文件名
            print(filename)
            label = name2label[filename]
            # pokemon/squirtle/00000183.jpg 4
            writer.writerow([img, label])
        print('writen into csv file:', filename)

    # read from csv file
    images, labels = [], []
    with open(os.path.join(path, 'face.csv')) as f:
        reader = csv.reader(f)
        for row in reader:
            # pokemon/squirtle\00000183.jpg 4
            img, label = row
            label = int(label)
            images.append(img)
            labels.append(label)
    assert len(images) == len(labels)
    return  images,labels
images,labels=work()
print(images,labels)
目录
相关文章
|
4天前
|
Python
Python Internet 模块
Python Internet 模块。
100 74
|
22天前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
104 63
|
24天前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
24天前
|
持续交付 Python
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。
|
24天前
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性
|
15天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
14天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
2天前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
97 80
|
21天前
|
存储 索引 Python
Python编程数据结构的深入理解
深入理解 Python 中的数据结构是提高编程能力的重要途径。通过合理选择和使用数据结构,可以提高程序的效率和质量
133 59
|
1天前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
13 2