今日分享 · 文件遍历    上一期我们说了怎么按修改日期分拣文件,那今天分享一个逆向操作——将所有子目录下的文件move到目标文件夹。    但是呢,这个操作有一定的风险,如果不小心在错误的路径执行了,它会把你辛辛苦苦整理好的文件,全部堆到了目标文件夹。    虽然我已经帮你做了对应路径的备份记录,但并不希望你要用到这个记录。万一,我是说万一,emmm~如果你还没有删除原先的空文件夹,我觉得批处理能快速救场,或者你可以联系我。如果你已经删除了原先的路径,那允许你先哭一会儿...    时间紧迫,不多哔哔了,上代码:#-*- coding:utf-8 -*-import osimport shutilFilesPath = os.getcwd() #获取当前路径FilesNum = 0DNameNum = 0print(FilesPath)for root,dirs,files in os.walk(FilesPath): #遍历 if root.endswith('AllFiles'): #不对目标目录执行操作 continue for file in files: if file.endswith('.py'): #不对py文件执行操作 continue if file.endswith('Backup_Paths.txt'): #不对记录文件执行操作 continue TempPath = os.path.join(root,file) #临时全路径 TargetPath = os.path.join(FilesPath,'AllFiles') #目标路径 TargetFullPath = os.path.join(TargetPath,file) #目标全路径 if not os.path.exists(TargetPath): #判断目标路径是否存在 os.makedirs(TargetPath) #如果不存在则创建 while True: if not os.path.exists(TargetFullPath): #若无重名文件 FilesNum = FilesNum + 1 #处理文件计数 shutil.move(TempPath,TargetFullPath) #转移文件 break #跳出循环 else: #若有重名文件 DNameNum = DNameNum + 1 #重名文件计数 file = str(DNameNum) + '_' + file TargetFullPath = os.path.join(TargetPath,file) #修改目标全路径 with open(os.path.join(FilesPath,'Backup_Paths.txt'),'a') as f:            f.write(TempPath + '\t' + TargetFullPath + '\n')    #路径备份 print('共转移文件 ' + str(FilesNum) + ' 个;其中重名 ' + str(DNameNum) + ' 次')PS.  今天在测试的时候,发现了一个上一期的小bug,就是如果执行代码前,已经存在目标文件夹,如“2021-12”,可能会报错无法正常统计显示文件数量。上期链接:→ 文件分拣(Python版) ←