文件太多教你一键自动整理文件!简单好用的 Python 脚本

Posted 编程界的小胖子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件太多教你一键自动整理文件!简单好用的 Python 脚本相关的知识,希望对你有一定的参考价值。

我以前经常把下载的东西放在桌面或者 “下载” 文件夹中,使用后再也没管它,久而久之文件夹就变得乱七八糟,再整理的时候非常痛苦,巴不得有一个自动化的工具帮我归类文档

不知道你是不是有过跟我一样糟糕的体验,不过,前段时间我用 Python 做了一个根据后缀名整理文件的工具

先来看看效果:

自动整理前:

自动整理后:

效果非常好,舒服多了!

1.准备

你只需要修改源代码主程序中调用 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 脚本的主要内容,如果未能解决你的问题,请参考以下文章

Mac技巧:教你如何一键隐藏桌面所有文件

三张图教你生成一个Android jar 库。

手把手教你为 PDF文件/论文自动批量添加书签/目录, 彻底告别手动添加书签的烦恼

ftp文件传输工具,教你该怎么使用ftp文件传输工具

福昕PDF转Word转换器,轻松一键完成PDF转Word

一文教你使用 Jenkins 设计多环境多项目持续集成环境!