AI智能
改变未来

Python实现自动整理文件


前言

工作上的文档和资料好几个月没整理了,因为平常太忙都是随手往桌面丢。整个桌面杂乱无章全是文档和资料。几乎快占满整个屏幕了,所有我必须要整理一下了。但是手动整理太费时间了,于是我想到了python。

示例

直接上代码

import osimport globimport 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 namereturn \"无法判断类型文件\"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 == \'\':breakexcept BaseException:print(\"ERROE:路径错误或有重复的文档\")

整理完了,桌面清爽了不少。(注意此脚本是按后缀进行分类归档的)

进阶

基于这个我想是否可以对其他不同的路径进行整理呢,于是又优化了一下

import osimport globimport 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\"],\"视频\": [\".a56cvi\", \".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 namereturn \"无法判断类型文件\"class DeskTopOrg(object):def __init__(self):self.filetype = FileType()def Organization(self):filepath = input(\"请输入需要整理的文件夹路径: \")paths = glob.glob(filepath + \"/*.*\")print(\'paths-->\',paths)for paad8th in paths:try:if not os.path.isdir(path):file = os.path.splitext(path)filename,type = fileprint(\'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:passprint(\"程序执行结束!\")if __name__ == \'__main__\':try:while True:desktopOrg = DeskTopOrg()desktopOrg.Organization()print(\"---->你的文件已经整理完成。\")a = input(\'---->请按回车键退出:\')if a == \'\':breakexcept BaseException:print(\"ERROE:路径错误或有重复的文档\")

可以自由的整理你想要整理的路径。

后序

其他朋友也有需求,但是又没有python环境,于是我将程序打包成exe执行文件。

  1. 安装pyinstaller
pip install pyinstaller
  1. 执行打包命令
#在程序脚本的路径执行以下命令pyinstaller -F ***.py

执行完后生成几个文件,在dist文件下有一个exe可执行文件,将他单独发给朋友即可。

别忘了先自己测试一遍。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Python实现自动整理文件