Python根据文件后缀实现文件夹整理

 更新时间:2024年02月06日 09:39:50   作者:微小冷  
这篇文章主要为大家详细介绍了Python如何根据文件后缀实现文件夹整理,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的可以参考下

文件类型字典

根据熵增原理,我们的文件夹在经过一段时间之后会变得混乱不堪,尤其是桌面和下载文件夹,找个东西会十分费劲,特别影响效率,所以用Python做一个文件夹整理小工具还是很有必要的。

而最常见的整理方法,就是按照文件类型,比如按照下表对文件进行归类

文件夹文件类别
图片“.jpg”, “.png”, “.jpeg”, “.gif”
视频“.mp4”, “.mkv”
音乐“.mp3”, “.wav”
文档“.pdf”
文本“.csv”, “.txt”
源码“.py”, “.c”, “.cpp”, “.php”
office“.docx”,“.xlsx”, “.pptx”, “.doc”, “.ppt”, “.xls”
压缩包“.zip”, “.tgz”, “.rar”, “.tar”, “.7z”
安装包“.msi”, “.exe”

为了实现这个目标,可以先做一个文件类型字典,来绑定文件类型和后缀

fDct = {
    "图片"  : [".jpg", ".png", ".jpeg", ".gif"],
    "视频"  : [".mp4", ".mkv"],
    "音乐"  : [".mp3", ".wav"],
    "文档"  : [".pdf"],  
    "文本"  : [".csv", ".txt"],
    "源码"  : [".py", ".c", ".cpp", ".php"],
    "office": [".docx",".xlsx", ".pptx", ".doc", ".ppt", ".xls"],
    "压缩包": [".zip", ".tgz", ".rar", ".tar", ".7z"],
    "安装包": [".msi", ".exe"],
}

而文件整理的逻辑是,先创建图片、视频等文件夹,然后通过文件的后缀找到其对应的文件类别,然后移动到相应的文件夹。为了更加便捷地实现这个功能,做一个反向的字典,用以通过后缀返回文件夹

exDct = {}
for key in fDct:
    exDct.update({ex:key for ex in fDct[key]})

移动文件

接下来就是移动文件,这里面有两个问题,一是目标文件夹不存在,则需要新建;二则是目标文件夹中已经有了同名文件,那么则需要报错

import os
import shutil
pJoin = os.path.join
pExist = os.path.exists

def mvFile(src, dst):
    if not pExist(dst):
        os.makedirs(dst)
    try:
        shutil.move(src, dst)
        return True
    except Exception as e:
        print(e)
        return False

主流程

接下来就是整个文件夹整理的主流程,第一步通过os.listdir得到所有文件名;第二步,遍历所有文件名,如果这个文件名的后缀刚好就在我们的后缀字典中,那么就将这个文件移动到对应文件类型的文件夹里。

from pathlib import Path

# tar是准备整理的文件夹
def sortFiles(tar):
    files = os.listdir(tar)
    fsErr = []
    for f in files:
        src = pJoin(tar, f)
        ex = Path(src).suffix.lower()
        if ex not in exDct: continue
        dst = pJoin(tar, exDct[ex])
        if not mvFile(src, dst):
            fsErr.append(src)
    if len(fsErr) == 0:
        return "全部文件移动成功"
    else:
        return "以下文件移动失败:\r\n"  + "\r\n".join(fsErr)

执行效果如下,即下载文件夹中的文件都被移动到这几个文件夹夹中了。

以上就是Python根据文件后缀实现文件夹整理的详细内容,更多关于Python文件夹整理的资料请关注脚本之家其它相关文章!

相关文章

  • Python生成指定数量的优惠码实操内容

    Python生成指定数量的优惠码实操内容

    在本篇文章里小编给大家整理了关于Python生成指定数量的优惠码的实例内容以及相关代码,有需要的朋友们学习下。
    2019-06-06
  • 浅谈django三种缓存模式的使用及注意点

    浅谈django三种缓存模式的使用及注意点

    这篇文章主要介绍了浅谈django 三种缓存模式的使用及注意点,详细的介绍了三种缓存模式,非常具有实用价值,需要的朋友可以参考下
    2018-09-09
  • django创建超级用户过程解析

    django创建超级用户过程解析

    这篇文章主要介绍了django创建超级用户过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Python queue模块攻略全解

    Python queue模块攻略全解

    这篇文章主要为大家介绍了Python queue模块攻略全解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Python+Turtle绘制可爱的可达鸭

    Python+Turtle绘制可爱的可达鸭

    一年一度的六一儿童节又来了,祝大朋友小朋友节日快乐!本文主要介绍如何运用Python中的turtle库控制函数绘制可达鸭,希望你会喜欢
    2022-05-05
  • pymysql的简单封装代码实例

    pymysql的简单封装代码实例

    这篇文章主要介绍了pymysql的简单封装代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • python 输出列表元素实例(以空格/逗号为分隔符)

    python 输出列表元素实例(以空格/逗号为分隔符)

    今天小编就为大家分享一篇python 输出列表元素实例(以空格/逗号为分隔符),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Conda国内镜像源及配置过程

    Conda国内镜像源及配置过程

    文章介绍Conda镜像源使用方法,涵盖临时指定单个/多个源、永久配置及恢复默认设置,同时说明main(官方稳定)、free(逐渐弃用)、conda-forge(社区更新快)等仓库的区别与适用场景
    2025-08-08
  • 用tensorflow搭建CNN的方法

    用tensorflow搭建CNN的方法

    本篇文章主要介绍了用tensorflow搭建CNN的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Using Django with GAE Python 后台抓取多个网站的页面全文

    Using Django with GAE Python 后台抓取多个网站的页面全文

    这篇文章主要介绍了Using Django with GAE Python 后台抓取多个网站的页面全文,需要的朋友可以参考下
    2016-02-02

最新评论