Python批量读取文件名并保存至txt

Python批量读取或修改文件名并保存至txt

一些项目涉及数据集预处理,需要批量读取、修改图片的文件名。这里做一个技术分享。

功能说明

批量读取文件名,并将读取的文件名保存到指定路径下的txt中。废话少说,代码如下。

Part 01 批量读取文件名,并将读取的文件名保存到指定路径下的txt中(带.*** 后缀)

# P01 批量读取文件名,并将读取的文件名保存到指定路径下的txt中(带.*** 后缀)

import os
def ListFilesToTxt(dir, file, wildcard, recursion):
    exts = wildcard.split(" ")
    files = os.listdir(dir)
    for name in files:
        fullname = os.path.join(dir, name)
        if (os.path.isdir(fullname) & recursion):
            ListFilesToTxt(fullname, file, wildcard, recursion)
        else:
            for ext in exts:
                if (name.endswith(ext)):
                    file.write(name + "\n")
                    break

def ReadName():
    dir = "C:/本地路径/JPEGImages"  # 读取文件路径
    outfile = "Image.txt"  # 将文件名写入Image.txt
    wildcard = ".jpg" # 读取jpg图片
    #   wildcard = ".jpg .txt .exe .dll .lib"      #要读取的文件类型;
    file = open(outfile, "w")
    if not file:
        print("cannot open the file %s for writing" % outfile)
    ListFilesToTxt(dir, file, wildcard, 1)
    file.close()

ReadName()

运行截图

需要读取的文件:
Python批量读取文件名并保存至txt_第1张图片
处理后:
txt文件默认保存在代码.py文件的同级目录,可修改txt文件保存路径
Python批量读取文件名并保存至txt_第2张图片Python批量读取文件名并保存至txt_第3张图片

Part 02 只读取文件名,并将读取的文件名保存到指定路径下的txt中(不带文件后缀)

代码如下:

# P02 批量读取文件名(不带后缀)

import os

file_path = "C:/本地路径/Image/"
path_list = os.listdir(file_path)  # os.listdir(file)会历遍文件夹内的文件并返回一个列表
print(path_list)
path_name = []  # 把文件列表写入save.txt中


def saveList(pathName):
    for file_name in pathName:
        with open("Image.txt", "a") as f:
            f.write(file_name.split(".")[0] + "\n")


def dirList(path_list):
    for i in range(0, len(path_list)):
        path = os.path.join(file_path, path_list[i])
    if os.path.isdir(path):
        saveList(os.listdir(path))


dirList(path_list)
saveList(path_list)

运行截图

需要读取的文件:
Python批量读取文件名并保存至txt_第4张图片
处理后:
txt文件默认保存在代码.py文件的同级目录,可修改txt文件保存路径
Python批量读取文件名并保存至txt_第5张图片
Python批量读取文件名并保存至txt_第6张图片

Part 03在txt文件中,在读取的文件名前批量添加 前缀/ 后缀

若需要对读取的文件名做批量修改,如在每个文件名前添加指定的路径。
代码如下:

# P03批量添加 ****/ 前缀

import pandas as pd

data = pd.read_csv("C:/本地路径/Image.txt", header=None);  # 读取需要修改的文件
print(data)
for i in range(len(data)):
    data.iloc[i] = 'data/obj/' + data.iloc[i]  # 加上 data/obj/ 前缀
    print(data.iloc[i])

data.to_csv('./addSuffixImage.txt', index=None)

运行截图

处理前:
Python批量读取文件名并保存至txt_第7张图片处理后:
Python批量读取文件名并保存至txt_第8张图片Python批量读取文件名并保存至txt_第9张图片

后记

大致的分享内容就是这些,如果以后涉及到更多的数据集预处理,还会继续做更多的技术分享。

你可能感兴趣的:(数据集预处理,python,神经网络,深度学习)