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

2020-12-17 0 266

前言

工作上的文档和资料好几个月没整理了,因为平常太忙都是随手往桌面丢。整个桌面杂乱无章全是文档和资料。几乎快占满整个屏幕了,所有我必须要整理一下了。但是手动整理太费时间了,于是我想到了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实现自动整理文件的脚本 http://www.ox520.com/27640.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务