导语:
举例: Python做一个根据后缀名整理文件的工具, 先来看看效果:
自动整理前:
自动整理后:
这样看起来就好很多了。
1.准备
开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章: python Windows最新版本安装教程
我们只需要修改源代码主程序中调用 auto_organize 函数的参数即可完成对对应文件夹的整理,比如我想整理 C:\Users\83493\Downloads 文件夹:
if __name__ == "__main__": ? ? auto_organize(r"C:\Users\83493\Downloads")
如上所示:修改代码第61行的文件夹地址即可。 修改完成后运行该脚本:
python auto_files.py
就能瞬间完成对指定文件夹的整理,极其方便。
2.原理
这份代码的原理很简单,为了整理这些文件,我们要遍历当前指定的文件夹:如果是文件夹则跳过,如果是文件则检测后缀,分类到对应的文件夹中。 文件夹名字及其对应的文件后缀如下:
DIRECTORIES = { ? ? "图片": [".jpeg", ".jpg", ".tiff", ".gif", ".bmp", ".png", ".bpg", "svg", ? ? ? ? ? ? ? ?".heif", ".psd"], ? ? "视频": [".avi", ".flv", ".wmv", ".mov", ".mp4", ".webm", ".vob", ".mng", ? ? ? ? ? ? ? ?".qt", ".mpg", ".mpeg", ".3gp", ".mkv"], ? ? "文档": [".oxps", ".epub", ".pages", ".docx", ".doc", ".fdf", ".ods", ? ? ? ? ? ? ? ? ? ".odt", ".pwi", ".xsn", ".xps", ".dotx", ".docm", ".dox", ? ? ? ? ? ? ? ? ? ".rvg", ".rtf", ".rtfd", ".wpd", ".xls", ".xlsx", ".ppt", ? ? ? ? ? ? ? ? ? "pptx",".csv",".pdf"], ? ? "压缩文件": [".a", ".ar", ".cpio", ".iso", ".tar", ".gz", ".rz", ".7z", ? ? ? ? ? ? ? ? ?".dmg", ".rar", ".xar", ".zip"], ? ? "影音": [".aac", ".aa", ".aac", ".dvf", ".m4a", ".m4b", ".m4p", ".mp3", ? ? ? ? ? ? ? ".msv", "ogg", "oga", ".raw", ".vox", ".wav", ".wma"], ? ? "文本": [".txt", ".in", ".out"], ? ? "编程": [".py",".html5", ".html", ".htm", ".xhtml",".c",".cpp",".java",".css"], ? ? "可执行程序": [".exe"], }
接下来是自动整理的部分代码,先遍历指定的文件夹,识别后缀并分类到对应的文件夹中。
for entry in os.scandir(dirval): ? ? if entry.is_dir(): ? ? ? ? # 如果是文件夹则跳过 ? ? ? ? continue ? ? file_path = Path(dirval + "\\" + entry.name) ? ? file_format = file_path.suffix.lower() ? ? # 避免后缀大小写判断问题,全转为小写 ? ? if file_format in FILE_FORMATS: ? ? ? ? directory_path = Path(dirval + "\\" + FILE_FORMATS[file_format]) ? ? ? ? directory_path.mkdir(exist_ok=True) ? ? ? ? file_path.rename(directory_path.joinpath(entry.name))
还有出现不存在在我们字典里的后缀的情况, 把它们分类到名为 其他文件 的文件夹中:
try: ? ? os.mkdir(dirval + "\\" +"其他文件") except: ? ? pass ? for dir in os.scandir(dirval): ? ? try: ? ? ? ? if dir.is_dir(): ? ? ? ? ? ? # 删除空文件夹 ? ? ? ? ? ? os.rmdir(dir) ? ? ? ? else: ? ? ? ? ? ? temp = str(Path(dir)).split('\\') ? ? ? ? ? ? # 分割文件路径 ? ? ? ? ? ? path = '\\'.join(temp[:-1]) ? ? ? ? ? ? print(path + '\\其他文件\\' + str(temp[-1])) ? ? ? ? ? ? os.rename(str(Path(dir)), path + '\\其他文件\\' + str(temp[-1])) ? ? except: ? ? ? ? pass
3.自定义整理
如果你并不想按照设定好的文件整理,希望能自定义地将某些特定后缀的文件放到另一个文件夹,比如 .py 文件统一收纳到[Python脚本]文件夹中,你可以这么改 DIRECTORIES 变量:
DIRECTORIES = { ? ? # ...... ? ? "编程": [".py",".html5", ".html", ".htm", ".xhtml",".c",".cpp",".java",".css"], ? ? # ...... }
改动后:
DIRECTORIES = { ? ? # ...... ? ? "编程": [".html5", ".html", ".htm", ".xhtml",".c",".cpp",".java",".css"], ? ? "Python脚本": [".py"], ? ? # ...... }
我们可以按照这个方法,自定义收纳那些你需要整理收纳的文件格式。
如果只想对 DIRECTORIES 变量里那些后缀的文件进行整理,不属于这些后缀的文件则不进行整理,不需要放到[其他文件]目录下,此时要怎么做?
很简单,你只需要删除以下部分代码就可以完成这个功能:
try: ? ? ? ? os.mkdir(dirval + "\\" +"其他文件") ? ? except: ? ? ? ? pass ? ? ? for dir in os.scandir(dirval): ? ? ? ? try: ? ? ? ? ? ? if dir.is_dir(): ? ? ? ? ? ? ? ? # 删除空文件夹 ? ? ? ? ? ? ? ? os.rmdir(dir) ? ? ? ? ? ? else: ? ? ? ? ? ? ? ? temp = str(Path(dir)).split('\\') ? ? ? ? ? ? ? ? # 分割文件路径 ? ? ? ? ? ? ? ? path = '\\'.join(temp[:-1]) ? ? ? ? ? ? ? ? print(path + '\\其他文件\\' + str(temp[-1])) ? ? ? ? ? ? ? ? os.rename(str(Path(dir)), path + '\\其他文件\\' + str(temp[-1])) ? ? ? ? except: ? ? ? ? ? ? pass # ......
小编觉得这样就很方便。
到此这篇关于Python实现脚本一键自动整理办公文件的文章就介绍到这了,更多相关Python实现自动整理文件内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
查看更多关于Python脚本实现一键自动整理办公文件的详细内容...