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)
目录
相关文章
|
1天前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
16 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
1天前
|
数据采集 Python
Python实用记录(七):通过retinaface对CASIA-WebFace人脸数据集进行清洗,并把错误图路径放入txt文档
使用RetinaFace模型对CASIA-WebFace人脸数据集进行清洗,并将无法检测到人脸的图片路径记录到txt文档中。
10 1
|
1天前
|
Python
Python实用记录(六):如何打开txt文档并删除指定绝对路径下图片
这篇文章介绍了如何使用Python打开txt文档,删除文档中指定路径的图片,并提供了一段示例代码来展示这一过程。
8 1
|
1天前
|
Shell Python
Python中os模块的常用方法和示例
在Python中,`os`模块提供了与操作系统交互的函数,用于文件和目录管理、路径操作、环境变量等。常用方法包括路径操作(如`os.path.join()`、`os.path.abspath()`)、文件和目录管理(如`os.mkdir()`、`os.remove()`)、环境变量和进程管理(如`os.getenv()`、`os.system()`)以及其他常用功能(如`os.getcwd()`、`os.urandom()`)。
7 0
|
2天前
|
计算机视觉 Python
Python实用记录(一):如何将不同类型视频按关键帧提取并保存图片,实现图片裁剪功能
这篇文章介绍了如何使用Python和OpenCV库从不同格式的视频文件中按关键帧提取图片,并展示了图片裁剪的方法。
15 0
|
4天前
|
Python
Python实现图片的拼接
Python实现图片的拼接
|
1天前
|
Unix 物联网 大数据
操作系统的演化与比较:从Unix到Linux
本文将探讨操作系统的历史发展,重点关注Unix和Linux两个主要的操作系统分支。通过分析它们的起源、设计哲学、技术特点以及在现代计算中的影响,我们可以更好地理解操作系统在计算机科学中的核心地位及其未来发展趋势。
|
3月前
|
安全 Linux 网络安全
部署07--远程连接Linux系统,利用FinalShell可以远程连接到我们的操作系统上
部署07--远程连接Linux系统,利用FinalShell可以远程连接到我们的操作系统上
|
3月前
|
Linux 虚拟化 数据安全/隐私保护
部署05-VMwareWorkstation中安装CentOS7 Linux操作系统, VMware部署CentOS系统第一步,下载Linux系统,/不要忘, CentOS -7-x86_64-DVD
部署05-VMwareWorkstation中安装CentOS7 Linux操作系统, VMware部署CentOS系统第一步,下载Linux系统,/不要忘, CentOS -7-x86_64-DVD
|
2月前
|
编解码 安全 Linux
基于arm64架构国产操作系统|Linux下的RTMP|RTSP低延时直播播放器开发探究
这段内容讲述了国产操作系统背景下,大牛直播SDK针对国产操作系统与Linux平台发布的RTMP/RTSP直播播放SDK。此SDK支持arm64架构,基于X协议输出视频,采用PulseAudio和Alsa Lib处理音频,具备实时静音、快照、缓冲时间设定等功能,并支持H.265编码格式。此外,提供了示例代码展示如何实现多实例播放器的创建与管理,包括窗口布局调整、事件监听、视频分辨率变化和实时快照回调等关键功能。这一技术实现有助于提高直播服务的稳定性和响应速度,适应国产操作系统在各行业中的应用需求。