Python中多个文件夹的文件处理

Python中多个文件夹的文件处理

446 Words 1.4 Minutes

下面是主文件夹的结构,由于需要用到的文件很多,且不在一起,每个文件都单独存在与一个文件目录下,迫切需要对它们进行合并。

alt

Python 内置的 os 模块和 shutil 模块

由于平时需要用到的文件都放在不同文件夹下,为了方便,直接将它们移到一个文件夹下,同时给他们改名字加以区分

获取所有文件绝对路径

path = r'path'  # 这里填所有文件所在的主层路径
files_path = [] # 用于存放所有文件的绝对路径,未来将用于修改名字或者复制等做一些修改
dir_title = []  # 用于存放文件夹数量
count = -1      # 用于计算主文件夹下有多少层子文件夹,也就是第二层的文件夹数量
try:
    for root, dirs, files in os.walk(path):
        if dirs:
            count += 1

        print(dirs)
        if files:
            for file in files:
                dir_title.append(count)
                files_path.append(f'{root}\\{file}')
except OSError as ex:
    print(ex)

new_title = [str(t) for t in dir_title]     # 把对应数量的类型修改为字符串,方便未来操作

修改文件名字,比如在文件前面加上数字前缀,加以区分

# 1. 先找到每个文件绝对路径中最后一个'\'的位置,用以索引
indexs = []
for file in files_path:
    indexs.append(file.rfind('\\'))

# 2. 将想要修改的新的文件名储存到一个数组里
new_name = []
for index, file in enumerate(files_path):
    # new_name.append()
    new_name.append(file[:indexs[index]+1] + '0' + new_title[index] + '-' + file[indexs[index]+1:])
    print(file[:indexs[index]+1])
    print(file[indexs[index]+1:])

# 3. 修改文件名
for index, name in enumerate(new_name):
    # print(name)
    os.rename(files_path[index], name)

拷贝文件到指定目录

import shutil
for file in new_name:
    shutil.copy2(file, r'c:\')    #将所有文件拷贝到c盘下
分享自制vscode主题