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