Python脚本实现一键自动整理办公文件
作者:车厘子@ 发布时间:2022-01-02 16:36:03
导语:
举例: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
# ......
小编觉得这样就很方便。
来源:https://blog.csdn.net/L010409/article/details/122881129


猜你喜欢
- 背景有时候爬虫爬过的url需要进行指纹核对,比如Scrapy就是进行指纹核对,如果是指纹重复则不再爬取。当然在入库的时候我还是需要做一次核对
- 最近由于单位数据库硬盘空间不足,整理的时候查了许多文章,也进行了测试,整理后得出一些经验供大家参考。首先,在网上看到一篇文章,如何Shrin
- 本文实例讲述了python抓取并保存html页面时乱码问题的解决方法。分享给大家供大家参考,具体如下:在用Python抓取html页面并保存
- 示例代码,用到了函数substr与iconv_substr,mb_substr<html><head><met
- 比较喜欢python的装饰器, 试了下一种用法,通过装饰器来传递sql,并执行返回结果这个应用应该比较少为了方便起见,直接使用了ironpy
- 1.保存变量先创建(在tf.Session()之前)saversaver = tf.train.Saver(tf.global_variab
- 前言备受期待的django 2.0已经发布了,最大的一个变化就是不再支持python2.x版本了,这也为我们还在保守使用的2.x的同学们敲响
- SQL Server数据库查询速度慢的原因有很多,常见的有以下几种:1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
- php ffmpeg获取视频缩略图1.环境centos 7ffmpeg version 2.8.15 Copyright2.centos7安
- 在执行任何查询时,SQL Server都会将数据读取到内存,数据使用之后,不会立即释放,而是会缓存在内存Buffer中,当再次执行相同的查询
- 近期因为开发一个新的H5+backbone 项目,验证输入手机号 验证码倒计时功能。#如上图所示 要实现验证码的倒计时的效果首先做页面的布局
- Mac系统上虽然自带PHP和Apache,但是有时不是我们想要的版本呢。今天我们就在macOS Sierra(10.12.1)上安装比较新的
- 今天遇到了这样一个问题,使用matplotlib绘制热图数组中横纵坐标自然是图片的像素排列顺序,但是这样带来的问题就是画出来的x,y轴中坐标
- 举例写文章详情页面的时候的一个场景:首先更改文章详情中的 PV,然后读取文章详情,然后根据文章详情中文章 Id 查阅该文章评论和该文章作者信
- 前言索引和切片是NumPy中最重要最常用的操作。熟练使用NumPy切片操作是数据处理和机器学习的前提,所以一定要掌握好。参考NumPy官方文
- 1. 背景golang 原生 json 包,在处理 json 对象的字段的时候,是需要严格匹配类型的。但是,实际上,当我们与一些老系统或者脚
- 做一个简单WPF连接数据库的控件类型和名称:DataGrid:dataGrid &
- 一、从 4.0 到 4.1 的主要变化 如果在4.1.0到4.1.3版本的MySQL中创建了包含 TIMESTAMP 字段的 InnoDB表
- 本文实例讲述了php7 图形用户界面GUI 开发。分享给大家供大家参考,具体如下:一、下载指定系统扩展http://pecl.php.net
- 一、去除空格strip()" xyz ".strip() &n