Python实现自动整理文件
前言
工作上的文档和资料好几个月没整理了,因为平常太忙都是随手往桌面丢。整个桌面杂乱无章全是文档和资料。几乎快占满整个屏幕了,所有我必须要整理一下了。但是手动整理太费时间了,于是我想到了python。
示例
直接上代码
import os
import glob
import shutil
'''
@Author: huny
@date: 2020.12.06
@function: 桌面整理
'''
class FileType():
def __init__(self):
self.filetype = {
"图片": [".jpeg", ".jpg", ".tiff", ".gif", ".bmp", ".png", ".bpg", "svg", ".heif", ".psd"],
"视频": [".avi", ".flv", ".wmv", ".mov", ".mp4", ".webm", ".vob", ".mng", ".qt", ".mpg", ".mpeg", ".3gp", ".mkv"],
"音频": [".aac", ".aa", ".aac", ".dvf", ".m4a", ".m4b", ".m4p", ".mp3", ".msv", ".ogg", ".oga", ".raw", ".vox", ".wav", ".wma"],
"文档": [".oxps", ".epub", ".pages", ".docx", ".doc", ".fdf", ".ods", ".odt", ".pwi", ".xsn", ".xps", ".dotx", ".docm", ".dox",
".rvg", ".rtf", ".rtfd", ".wpd", ".xls", ".xlsx", ".ppt", ".pptx", ".csv", ".pdf", ".md",".xmind"],
"压缩文件": [".a", ".ar", ".cpio", ".iso", ".tar", ".gz", ".rz", ".7z", ".dmg", ".rar", ".xar", ".zip"],
"文本": [".txt", ".in", ".out",".json",".xml",".log"],
"程序脚本": [".py", ".html5", ".html", ".htm", ".xhtml",s".c", ".cpp", ".java", ".css",".sql"],
"可执行程序": [".exe",".bat", ".lnk"],
"字体文件": [".ttf", ".OTF", ".WOFF", ".EOT"]
}
def JudgeFile(self, pathname):
for name, type in self.filetype.items():
if pathname in type:
return name
return "无法判断类型文件"
class DeskTopOrg(object):
def __init__(self):
self.filetype = FileType()
def Organization(self):
filepath = os.path.join(os.path.expanduser('~'),"Desktop")
paths = glob.glob(filepath + "/*.*")
# print('paths-->',paths)
for path in paths:
try:
if not os.path.isdir(path):
file = os.path.splitext(path)
filename,type = file
# print('type-->',type)
# print("filename-->",filename)
print('path-->',path)
dir_path = os.path.dirname(path)
# print('dir_path-->',dir_path)
savePath = dir_path + '/{}'.format(self.filetype.JudgeFile(type))
print('savePath-->',savePath)
if not os.path.exists(savePath):
os.mkdir(savePath)
shutil.move(path, savePath)
else:
shutil.move(path, savePath)
except FileNotFoundError:
pass
# print("程序执行结束!")
if __name__ == '__main__':
try:
while True:
desktopOrg = DeskTopOrg()
desktopOrg.Organization()
print("---->你的桌面已经整理完成。")
a = input('---->请按回车键退出:')
if a == '':
break
except BaseException:
print("ERROE:路径错误或有重复的文档")
整理完了,桌面清爽了不少。(注意此脚本是按后缀进行分类归档的)

进阶
基于这个我想是否可以对其他不同的路径进行整理呢,于是又优化了一下
import os
import glob
import shutil
'''
@Author: huny
@date: 2020.12.06
@function: 文件整理
'''
class FileType():
def __init__(self):
self.filetype = {
"图片": [".jpeg", ".jpg", ".tiff", ".gif", ".bmp", ".png", ".bpg", "svg", ".heif", ".psd"],
"视频": [".avi", ".flv", ".wmv", ".mov", ".mp4", ".webm", ".vob", ".mng", ".qt", ".mpg", ".mpeg", ".3gp", ".mkv"],
"音频": [".aac", ".aa", ".aac", ".dvf", ".m4a", ".m4b", ".m4p", ".mp3", ".msv", ".ogg", ".oga", ".raw", ".vox", ".wav", ".wma"],
"文档": [".oxps", ".epub", ".pages", ".docx", ".doc", ".fdf", ".ods", ".odt", ".pwi", ".xsn", ".xps", ".dotx", ".docm", ".dox",
".rvg", ".rtf", ".rtfd", ".wpd", ".xls", ".xlsx", ".ppt", ".pptx", ".csv", ".pdf", ".md",".xmind"],
"压缩文件": [".a", ".ar", ".cpio", ".iso", ".tar", ".gz", ".rz", ".7z", ".dmg", ".rar", ".xar", ".zip"],
"文本": [".txt", ".in", ".out", ".json","xml",".log"],
"程序脚本": [".py", ".html5", ".html", ".htm", ".xhtml", ".c", ".cpp", ".java", ".css",".sql"],
"可执行程序": [".exe",".bat",".lnk"],
"字体文件": [".ttf", ".OTF", ".WOFF", ".EOT"]
}
def JudgeFile(self, pathname):
for name, type in self.filetype.items():
if pathname in type:
return name
return "无法判断类型文件"
class DeskTopOrg(object):
def __init__(self):
self.filetype = FileType()
def Organization(self):
filepath = input("请输入需要整理的文件夹路径: ")
paths = glob.glob(filepath + "/*.*")
print('paths-->',paths)
for path in paths:
try:
if not os.path.isdir(path):
file = os.path.splitext(path)
filename,type = file
print('type-->',type)
print("filename-->",filename)
print('path-->',path)
dir_path = os.path.dirname(path)
print('dir_path-->',dir_path)
savePath = dir_path + '/{}'.format(self.filetype.JudgeFile(type))
print('savePath-->',savePath)
if not os.path.exists(savePath):
os.mkdir(savePath)
shutil.move(path, savePath)
else:
shutil.move(path, savePath)
except FileNotFoundError:
pass
print("程序执行结束!")
if __name__ == '__main__':
try:
while True:
desktopOrg = DeskTopOrg()
desktopOrg.Organization()
print("---->你的文件已经整理完成。")
a = input('---->请按回车键退出:')
if a == '':
break
except BaseException:
print("ERROE:路径错误或有重复的文档")
可以自由的整理你想要整理的路径。


后序
其他朋友也有需求,但是又没有python环境,于是我将程序打包成exe执行文件。
- 安装pyinstaller
pip install pyinstaller
- 执行打包命令
#在程序脚本的路径执行以下命令
pyinstaller -F ***.py
执行完后生成几个文件,在dist文件下有一个exe可执行文件,将他单独发给朋友即可。

别忘了先自己测试一遍。

Python实现自动整理文件的更多相关文章
- Hazel,自动整理文件,让你的 Mac 井井有条
原文地址 https://sspai.com/post/35225 让我们从实际需求出发,看看问题出在哪里,并在此基础上认识和学习使用 Hazel. 电脑随着使用时间的增长,其中的文件也在疯狂的增长, ...
- 10行Python代码自动清理电脑内重复文件,解放双手!
大家好,又到了Python办公自动化系列. 今天分享一个系统层面的自动化案例: 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做 ...
- 第三百四十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—craw母版l创建自动爬虫文件—以及 scrapy item loader机制
第三百四十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—craw母版l创建自动爬虫文件—以及 scrapy item loader机制 用命令创建自动爬虫文件 创建爬虫文件是根据scrap ...
- Shell 命令行,写一个自动整理 ~/Downloads/ 文件夹下文件的脚本
Shell 命令行,写一个自动整理 ~/Downloads/ 文件夹下文件的脚本 在 mac 或者 linux 系统中,我们的浏览器或者其他下载软件下载的文件全部都下载再 ~/Downloads/ 文 ...
- Python中根据时间自动创建文件夹
导语 电脑桌面文件太多查找起来比较花费时间,并且凌乱的电脑桌面也会影响工作心情,于是利用python根据时间自动建立当日文件夹,这样就可以把桌面上文件按时间进行存放. 代码实现 # _*_codi ...
- 二十三 Python分布式爬虫打造搜索引擎Scrapy精讲—craw母版l创建自动爬虫文件—以及 scrapy item loader机制
用命令创建自动爬虫文件 创建爬虫文件是根据scrapy的母版来创建爬虫文件的 scrapy genspider -l 查看scrapy创建爬虫文件可用的母版 Available templates: ...
- Python学习笔记整理总结【语言基础篇】
一.变量赋值及命名规则① 声明一个变量及赋值 #!/usr/bin/env python # -*- coding:utf-8 -*- # _author_soloLi name1="sol ...
- 【python】自动更新pu口袋校园活动
[python]自动更新pu口袋校园活动 脚本目标: 1. 自动爬取pu口袋校园活动,筛选出需要的活动,此处我的筛选条件是线上活动,因为可以不用去就可以白嫖学时 2. 自动发送邮件到QQ邮箱,每次只发 ...
- python学习笔记-(七)python基础--集合、文件操作&函数
本节内容 1.集合操作 2.文件操作 3.字符编码与转码 4.函数操作 1.集合操作 集合是一个无序的.不重复的数据组合: 1.1 常用操作 它的作用是: 1)自动去重:列表变成集合,自动去重: &g ...
随机推荐
- [MIT6.006] 7. Counting Sort, Radix Sort, Lower Bounds for Sorting 基数排序,基数排序,排序下界
在前6节课讲的排序方法(冒泡排序,归并排序,选择排序,插入排序,快速排序,堆排序,二分搜索树排序和AVL排序)都是属于对比模型(Comparison Model).对比模型的特点如下: 所有输入ite ...
- 运维告警排班太复杂?试试Cloud Alert智能告警排班
前言: 之前的几篇文章有说过,通过智能告警平台Cloud Alert,将指定条件的告警以多样化的通知方式,通知到指定的人,其中的通知的方式包含电话.短信.邮件.微信.APP.钉钉等. 本篇文章就来说下 ...
- 正则表达式-获取Json属性值
需求 需要获取json的字符串参数中的某个属性的值,只用json转对象后再获取层级比较多,所以使用简单的正则表达式进行获取 具体实现 public static void main(String[] ...
- linux 内核 tasklets 原理以及工作队列
如果某种应用并不需要在多个CPU上并行执行,那么软中断其实是没有必要的.因此诞生了弥补以上两个要求的tasklet.它具有以下特性: a)一种特定类型的tasklet只能运行在一个CPU上,不能并行, ...
- linux中suid/sgid/sticky及扩展属性(attr)
suid只适用于命令文件.(如/usr/bin/passwd) 当命令文件上有suid权限时,则操作用户的权限变成属主权限.命令文件上无suid权限则操作用户的权限不变. 查看suid权限: [roo ...
- Spring源码之事务(一)— TransactionAutoConfiguration自动配置
总结: 在ConfigurationClassParser#parse()中会对deferredImportSelectorHandler进行处理(在处理@ComponentScan 自己所写@Com ...
- loadrunner 生成随机参数 Radom相关
我也是刚开始进入测试行业,不过比较幸运的我之前做过开发,所以对代码比较熟悉,对loadrunner没有进行过系统的学习,也是通过自己的摸索慢慢的积累知识. 今天遇到项目中要我做一个压力测试,其中一些参 ...
- python-验证码图片识别
import tesserocr from PIL import Image #新建Image对象 image = Image.open('code.png') #调用tesserocr的image_ ...
- kali 系列学习05 - Nessus 安装及配置
Nessus 安装 1.https://www.tenable.com/products/nessus/select-your-operating-system 点此下载nessus选择适合自己 ...
- __METHOD__