百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python 办公自动化|自动整理文件,一键完成

off999 2024-10-01 13:55 31 浏览 0 评论



大家好,又到了 Python 办公自动化专题, 本文跟大家分享一个文件整理脚本的实现过程。

具体的功能很简单,给定一个打算整理的文件夹目录,这个脚本可以将该目录下的 所有文件 都揪出来,并且 根据后缀名归类到不同的文件夹 里,就像下图一样,简直是整理爱好者的福音

通过本例还可以学到: os 、 glob 、 shutil 三个标准库的综合运用

现在让我们一起来捋一捋实现的逻辑

首先是导入需要的依赖库

让我们愉快地开始吧~本文源代码获取私信小编“01“即可免费领取还可获取python资料!


import os
import shutil
import glob

os 库可以完成操作系统层面大量操作,例如文件夹的 创建、移动、重命名、删除 等,有些功能实现的不是很完美,就用到 shutil 库跟其互补了,例如文件的 复制、移动 等。 glob 库可以利用通配符进行 文件的搜索 获取,非常强大

# 设置建立分类总文件夹的路径,这里按自己的实际路径修改
mkdir_path = r'C:\Users\chenx\文件夹分类'
# 设置需要遍历整理的文件夹路径,可以依据自己的实际需求修改
goal_dir = r'C:\xxxxxxxx)'

if not os.path.exists(mkdir_path):
    os.mkdir(mkdir_path)

os.mkdir 可以在指定路径创建文件夹,但如果文件夹已经存在则会报错,因此谨慎一点可以利用 os.path.exists 先对文件夹的存在与否进行判断

接下来是代码核心循环,为了方便理解先简化成如下形式:

for file in glob.glob(f'{goal_dir}/**/*', recursive=True):
    if os.path.isfile(file):
        print(file)

glob.glob(f'{goal_dir}/**/*', recursive=True) 中 **/* 是 通配符的重要用法, * 可以代表任意个字符,包括 0 个字符, recursive 参数的设置确保遍历

由于需要 找出所有的文件而非文件夹 ,这里用 os.path.isfile 进行判断。

最后可以输出文件的绝对路径先看看代码有没出现错误,让我们继续往下写

for file in glob.glob(f'{goal_dir}/**/*', recursive=True):
    if os.path.isfile(file):
        filename = os.path.basename(file)
        if '.' in filename:
            suffix = filename.split('.')[-1]
        else:
            suffix = 'others'

这里发生了什么呢?

确认遍历到的是文件后,先用 os.path.basename 获取绝对路径中的文件名,接下来就是获取后缀名了

可以简单用 split 根据 . 将字符串 “劈开”,然后取最后一个元素就是后缀名了

需要注意的是,这里必须要考虑一个特殊情况:有些文件没有后缀名(文件类型就叫文件),且名字中也没有 . ,这时用字符串方法 split 就会报错。

如下图:

因此需要先判断文件中有没有 .

由于我们是利用后缀名建立文件夹,所以索性将文件名中没有 . 的 文件 类型统一分类到 others 文件夹了

这个实现逻辑大致上没有问题,但是依然忽略了一种极端情况: 有些文件没有后缀名,且文件名中有个 . ,哈哈哈哈这种就会被上面的实现逻辑拆解出错误的后缀名了; 更好的方法是有个函数可以直接获取文件的后缀名,利用这个对文件进行分类,感兴趣的读者可以自己尝试

接下来就可以 根据后缀名产生文件夹 了,这里依然要注意先判断文件夹是否已经产生

for file in glob.glob(f'{goal_dir}/**/*', recursive=True):
    if os.path.isfile(file):
        filename = os.path.basename(file)
        if '.' in filename:
            suffix = filename.split('.')[-1]
        else:
            suffix = 'others'
        if not os.path.exists(f'{mkdir_path}/{suffix}'):
            os.mkdir(f'{mkdir_path}/{suffix}')
        shutil.copy(file, f'{mkdir_path}/{suffix}')

为了避免移动文件夹而造成的异常,尤其是系统盘,因此这里用的是复制。按照需要也可以换成 shutil.move 最后我们可以加上分类文件夹和所有文件的计数并输出

完整代码如下:

import os
import shutil
import glob

mkdir_path = r'C:\Users\chenx\文件夹分类'
goal_dir = r'C:\xxxxxxxx'

if not os.path.exists(mkdir_path):
    os.mkdir(mkdir_path)

file_num = 0
dir_num = 0

for file in glob.glob(f'{goal_dir}/**/*', recursive=True):
    if os.path.isfile(file):
        filename = os.path.basename(file)
        if '.' in filename:
            suffix = filename.split('.')[-1]
        else:
            suffix = 'others'
        if not os.path.exists(f'{mkdir_path}/{suffix}'):
            os.mkdir(f'{mkdir_path}/{suffix}')
            dir_num += 1
        shutil.copy(file, f'{mkdir_path}/{suffix}')
        file_num += 1

print(f'整理完成,有{file_num}个文件分类到了{dir_num}个文件夹中')

相关推荐

笔记本电脑系统修复软件(笔记本电脑程序修复)

1、超级兔子2013系统修复软件超级兔子是一款完整的系统维护工具。拥有电脑系统评测、垃圾清理和注册表清理、可疑文件和插件检测、网页防护等功能,同时自带一些实用的系统工具,可清理你大多数的文件、注册表里...

联想保修服务包括哪些(联想保修都保修什么)

1、保修36个月的硬件包括:CPU、内存。2、保修24个月的硬件包括:主板、显卡、LCD屏、硬盘、电源适配器、键盘、鼠标模块。3、保修12个月的硬件包括:LCD之附件、光驱、DVD、CDR/W、软驱...

系统科学大会(中国系统科学学会)

2021年各种科学大会的召开时间取决于疫情的发展和国家政策的调整。一些大型的国际科学会议可能会推迟或者采用线上形式进行,以保障参会人员的安全和健康。同时,一些国内的学术会议也会受到疫情的影响,需要推迟...

win10系统下载的内容在哪(win10下载的软件在哪个文件夹)

进入C:\Windows\SoftwareDistribution\Download目录下,通过win10应用商店中下载的安装包都放在此目录下。进入C:\Windows\SoftwareDistrib...

下载原版xp系统光盘(xp光盘系统安装教程怎么安装)

方法步骤步骤如下:1、首先打开计算机,在电脑光驱上放入XP光盘,启动电脑后不停按F12、F11、Esc等启动热键,在弹出的启动菜单中选择DVD选项,回车。2、进入光盘主菜单,按数字2或点击选项2运行w...

windows7中文版下载安装(windows7安装包下载)

谢邀,如果你戳设置-时间和语言-区域和语言,右边的语言提示“只允许使用一种语言包”,那么你的系统就是家庭中文版。家庭中文版限定系统界面只能使用简体中文显示,其他功能则与普通家庭版没有区别,也可以使用其...

win7开机按f2怎么重装系统(win7开机按f12怎么重装系统)

开机或重启时,在进入Windows前按F2进入BIOS。  ←→移动到第三个好像是BOOT。  然后将EXTENELBOOT选项设置为ENABLE  最后按F5将第一启动项目设置为EXTENEL...

win10驱动管理(win10驱动程序)
win10驱动管理(win10驱动程序)

win10由于联网后会自动安装驱动,如果自动安装驱动没出现问题,即可视为最佳驱动,若出现问题,卸载出问题的驱动,然后去查自己主板型号,在主板供应商官网下载对应驱动即是最佳01Windows10驱动更新调整当前当你插入连接即插即用(Pn...

2025-12-29 05:51 off999

手机上怎么找qq邮箱登录(用手机怎么找到qq邮箱)

入口是“联系人”选项卡。qq邮箱手机在QQ主菜单中选择下方的“联系人”选项卡;3、在“联系人”中选取“公众号”选项卡;4、在公众号中菜单中找到或搜索“QQ邮箱提醒”,点击进入;5、点击“进入邮箱”;6...

amd显卡控制面板

AMD显卡控制面板是用来管理你的AMD显卡的,可以在控制面板中进行设置一些简单的调整,来提升显卡性能和效果。1、先打开AMD控制面板。2、打开“垂直同步(V-SYNC)”功能,可调整细节,改善影像流畅...

win10老是未响应卡死(window10总是未响应)

具体方法:1、如果win10中的应用程序出现不响应的情况,应该是应用程序加载失败了。可以通过重置方法来解决win10应用程序无响应。2、登录win10系统,用管理员身份运行Powershell(可在C...

usb安装系统步骤(USB安装系统步骤)

1.准备一张U盘,将联想官网下载的系统镜像文件复制到U盘中;2.将U盘插入联想S41U电脑,重启电脑,按F12进入BIOS设置,将U盘设置为启动项;3.重启电脑,进入U盘安装界面,按提示操作,完成系统...

win98安装教程(win98iso怎么安装)

如何安装windows98  一、具体安装步骤  备份好重要文件之后,就可以安装windows98了。  第一步:启动安装程序。  用户如果原来已安装了windows95/97/98,现在拟对其进行升...

雨林木风win7安装(雨林木风win732位安装教程)

  安装步骤如下:  1、光盘放入光驱,复制光盘上的win7.gho和安装系统.exe到硬盘非C盘的文件夹;(gho文件名可以是其他名字,后缀为gho,体积最大的就是。)  2、双击安装系统.exe;...

win10解绑管理员账户(win10管理员账户怎么取消开机密码)

要解除Windows10电脑上的管理员权限,您需要进行以下操作:1.打开“控制面板”:右键单击“开始”按钮,然后选择“控制面板”。2.进入“用户账户”:在控制面板中,选择“用户账户”。3.点击...

取消回复欢迎 发表评论: