本文用 Python 实现了将文件夹中 一级子文件夹内的文件 批量自动化移动脚本,内涵源码。
动机
用 WPS 下载模版的时候,WPS 会把 PPT 外面套一个文件夹的壳,如下图:
可能是为了防止 PPT 名字一样而覆盖?不清楚为什么,但是很影响使用,下载的多了的话还要手动一个一个拖出来。
重复机械的工作不应该由人类去干,于是就想着用 Python 写一个自动化脚本来帮助去掉文件夹的壳,一劳永逸。
源码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| import os import shutil src_folder = r'D:\3下载\WPS下载模板\下载'+'\\' des_folder = r'D:\3下载\WPS下载模板\科技风'+'\\'
folders = os.listdir(src_folder) if not os.path.exists(des_folder): os.makedirs(des_folder) des_folders =os.listdir(des_folder) for i in folders: if os.path.isdir(src_folder + i): files = os.listdir(src_folder + i) if len(files) == 0: os.rmdir(src_folder + i) for j in files: if j in des_folders: print("有同名文件:" + src_folder + i + '\\' + j) else: src_path = src_folder + i + '\\' + j if os.path.isfile(src_path): shutil.move(src_path,des_folder) des_folders = os.listdir(des_folder) if len(os.listdir(src_folder + i)) == 0: os.rmdir(src_folder + i)
|
效果
PPT 被从原路径输出到目标路径,没有了文件夹,可以选择 src_folder
和 des_folder
相同,原地输出。
若碰到同名的文件,会输出提示信息,并打印出来同名文件的路径,可以自行处理。
移动过后,src_folder
中剩下的空文件夹会被删除。
拓展
其实上述代码完全符合在我最初场景的期望,所以可以到此为止了。
可以改进的地方,同名以后直接加后缀再移动,不过考虑到重名的几率很小,基本不会重名,或者重名的文件也不会太多,就留下自行处理吧。
此代码只移动一级目录,文件夹里套文件夹会被忽略。自己目前也没有遇到这种需求,故没有加入这个功能。或许遇到了再实现吧。