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系列之数据处理编程实例(一)
May 22 Python
python中的__slots__使用示例
Feb 26 Python
Python中pip安装非PyPI官网第三方库的方法
Jun 02 Python
使用python绘制二元函数图像的实例
Feb 12 Python
python实现本地批量ping多个IP的方法示例
Aug 07 Python
python采集百度搜索结果带有特定URL的链接代码实例
Aug 30 Python
python3使用GUI统计代码量
Sep 18 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
Dec 03 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
Jan 02 Python
Python如何使用input函数获取输入
Aug 06 Python
Python基于内置函数type创建新类型
Oct 22 Python
基于Python实现nc批量转tif格式
Aug 14 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
用php简单实现加减乘除计算器
2014/01/06 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
2015/12/31 PHP
jQuery中DOM操作实例分析
2015/01/23 Javascript
js+css实现上下翻页相册代码分享
2015/08/18 Javascript
浅谈JavaScript超时调用和间歇调用
2015/08/30 Javascript
学习javascript面向对象 理解javascript原型和原型链
2016/01/04 Javascript
JavaScript模拟数组合并concat
2016/03/06 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
2016/07/10 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
javascript数组去重方法分析
2016/12/15 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
Bootstrap面板学习使用
2017/02/09 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
Vue下拉框回显并默认选中随机问题
2018/09/06 Javascript
Vue 重置组件到初始状态的方法示例
2018/10/10 Javascript
vue-router传递参数的几种方式实例详解
2018/11/13 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
浅谈vuex为什么不建议在action中修改state
2020/02/02 Javascript
nodejs使用Sequelize框架操作数据库的实现
2020/10/21 NodeJs
Python实现控制台输入密码的方法
2015/05/29 Python
python中的编码知识整理汇总
2016/01/26 Python
Python基于tkinter模块实现的改名小工具示例
2017/07/27 Python
python+flask实现API的方法
2018/11/21 Python
python 使用递归回溯完美解决八皇后的问题
2020/02/26 Python
如何Tkinter模块编写Python图形界面
2020/10/14 Python
python 进程池pool使用详解
2020/10/15 Python
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
英国的领先快速时尚零售商:In The Style
2019/03/25 全球购物
高中美术教学反思
2014/01/19 职场文书
铲车司机岗位职责
2014/03/15 职场文书
个人承诺书格式
2014/06/03 职场文书
转让协议书范本
2014/09/13 职场文书
法人代表证明书
2014/09/18 职场文书
2014年卫生监督工作总结
2014/12/09 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python
JS实现刷新网页后之前浏览位置保持不变示例详解
2022/08/14 Javascript