Python实现自动整理文件的脚本


Posted in Python onDecember 17, 2020

前言

工作上的文档和资料好几个月没整理了,因为平常太忙都是随手往桌面丢。整个桌面杂乱无章全是文档和资料。几乎快占满整个屏幕了,所有我必须要整理一下了。但是手动整理太费时间了,于是我想到了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:路径错误或有重复的文档")

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

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", ".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实现自动整理文件的脚本

后续

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

安装pyinstaller

pip install pyinstaller

执行打包命令

#在程序脚本的路径执行以下命令
pyinstaller -F ***.py

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

Python实现自动整理文件的脚本

别忘了先自己测试一遍。

Python实现自动整理文件的脚本

以上就是Python实现自动整理文件的脚本的详细内容,更多关于python 自动整理文件的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
测试、预发布后用python检测网页是否有日常链接
Jun 03 Python
Web服务器框架 Tornado简介
Jul 16 Python
python端口扫描系统实现方法
Nov 19 Python
编写Python的web框架中的Model的教程
Apr 29 Python
python中私有函数调用方法解密
Apr 29 Python
Python实现正整数分解质因数操作示例
Aug 01 Python
如何使用python进行pdf文件分割
Nov 11 Python
.dcm格式文件软件读取及python处理详解
Jan 16 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
Jun 08 Python
pytorch实现查看当前学习率
Jun 24 Python
基于python实现音乐播放器代码实例
Jul 01 Python
python 怎样进行内存管理
Nov 10 Python
Python用access判断文件是否被占用的实例方法
Dec 17 #Python
Python实例教程之检索输出月份日历表
Dec 16 #Python
使用Python判断一个文件是否被占用的方法教程
Dec 16 #Python
python中类与对象之间的关系详解
Dec 16 #Python
python简单实现插入排序实例代码
Dec 16 #Python
python中函数返回多个结果的实例方法
Dec 16 #Python
python的setattr函数实例用法
Dec 16 #Python
You might like
法压式咖啡之制作法
2021/03/03 冲泡冲煮
相对路径转化成绝对路径
2007/04/10 PHP
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
js获取网页高度(详细整理)
2012/12/28 Javascript
JavaScript使用Prototype实现面向对象的方法
2015/04/14 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
2015/05/09 Javascript
javascript背景时钟实现方法
2015/06/18 Javascript
jQuery 判断图片是否加载完成方法汇总
2015/08/10 Javascript
js获取本机操作系统类型的两种方法
2015/12/19 Javascript
javascript实现计时器的简单方法
2016/02/21 Javascript
JavaScript ES5标准中新增的Array方法
2016/06/28 Javascript
关于微信中a链接无法跳转问题
2016/08/02 Javascript
BootStrap Fileinput的使用教程
2016/12/30 Javascript
聊聊Vue.js的template编译的问题
2017/10/09 Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
2018/08/25 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
Python Web框架Flask信号机制(signals)介绍
2015/01/01 Python
简单讲解Python编程中namedtuple类的用法
2016/06/21 Python
基于python的七种经典排序算法(推荐)
2016/12/08 Python
Python常见加密模块用法分析【MD5,sha,crypt模块】
2017/05/24 Python
Django 根据数据模型models创建数据表的实例
2018/05/27 Python
Python wxpython模块响应鼠标拖动事件操作示例
2018/08/23 Python
Python拼接字符串的7种方法总结
2018/11/01 Python
Python中面向对象你应该知道的一下知识
2019/07/10 Python
用Python获取摄像头并实时控制人脸的实现示例
2019/07/11 Python
python 根据字典的键值进行排序的方法
2019/07/24 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
2020/02/14 Python
python导入库的具体方法
2020/06/18 Python
澳大利亚最大的在线美发和美容零售商之一:My Hair Care & Beauty
2019/08/24 全球购物
介绍一下EJB的体系结构
2012/08/01 面试题
护理专业应届毕业生推荐信
2013/11/15 职场文书
好家长事迹材料
2014/01/23 职场文书
村党支部书记个人对照材料汇报
2014/10/26 职场文书
党员证明信
2015/06/19 职场文书
springboot集成flyway自动创表的详细配置
2021/06/26 Java/Android
Python 数据可视化之Seaborn详解
2021/11/02 Python