[置顶] 教你怎么用 Python 自动整理文件-Python实用宝典

[置顶]教你怎么用 Python 自动整理文件

 

我经常习惯性地把下载下来的东西放在桌面或者下载文件夹中,使用完后再也没管它,久而久之桌面便变得乱七八糟到后面再整理的时候就非常痛苦了,巴不得有一个自动整理的工具帮我归类文档。

不知道你是不是有过跟我一样糟糕的体验,不过,我们现在完全可以用Python做一个这样的工具来根据后缀名整理文件先来看看效果:

自动整理前:

自动整理后:

效果非常好,舒服多了如果你想要直接下载源代码试试看,请关注文章最下方的Python实用宝典公众号,后台回复 文件自动整理 获得源代码下载地址。

原理

为了整理这些文件,我们要遍历当前指定的文件夹:如果是文件夹则跳过,如果是文件则检测后缀,分类到对应的文件夹中。文件夹名字及其对应的文件后缀如下:

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

最后再把以上这些部分整理成函数即可。关注文章最下方的Python实用宝典公众号,后台回复 文件自动整理 获得源代码下载地址。

文章到此就结束啦,如果你喜欢今天的Python 教程,请持续关注Python实用宝典,如果对你有帮助,麻烦在下面点一个赞/在看哦有任何问题都可以在下方留言区留言,我们会耐心解答的!

​Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

Python实用宝典
本文由 Python实用宝典 作者:Python实用宝典 发表,其版权均为 Python实用宝典 所有,文章内容系作者个人观点,不代表 Python实用宝典 对观点赞同或支持。如需转载,请注明文章来源。
2

发表评论