Python实现批量自动整理文件


Posted in Python onMarch 16, 2022

为了实现这样的小工具,我们先设想有下面这些功能。

1、可以自定义整理某一个路径下面的所有需要被整理的文件。
2、默认情况下,使用文件后缀作为同一种类文件的文件夹名称,有其他想法的小伙伴可自行扩展。

将使用到的python模块导入到代码块中。

import os  # 文件/文件夹应用操作
import shutil  # 移动文件
import logging  # 使用日志logging来打印日志

选择好需要整理的原始文件目录。

Python实现批量自动整理文件

下面是整理完成后的效果图,根据文件类型对各种文件进行整理。

Python实现批量自动整理文件

在代码块中加入日志打印的模块,这里日志打印选择的是logging模块。

logger = logging.getLogger('自动归纳文件')  # 日志名称
logging.basicConfig(format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')  # 日志打印格式
logger.setLevel(logging.DEBUG)  # 日志打印级别

下面是文件整理的代码块的全部实现方式,主要部分都加上注释说明。

dir = input('请输入需要整理的文件目录: \n')  # 需要整理的文件路径

if os.path.isdir(dir):
    logger.info('当前目录[' + dir + ']校验成功!')
    paths = []
    for file_path, dir_names, file_names in os.walk(r'' + dir):
        for file_name in file_names:
            try:
                file_name_path = os.path.join(file_path, file_name)
                dir_ = file_name.split('.')[1]
                new_file_name_path = os.path.join(dir, dir_)
                # 校验新的文件夹是否已经存在
                if os.path.isdir(new_file_name_path):
                    # 直接移动文件
                    shutil.move(file_name_path, new_file_name_path)
                else:
                    # 创建好文件夹后移动文件
                    os.mkdir(new_file_name_path)
                    shutil.move(file_name_path, new_file_name_path)
                paths.append(os.path.join(new_file_name_path, file_name))
            except:
                logger.error('[' + file_name_path + ']移动发生异常,执行下一个!')

    for path in paths:
        logger.info('移动完成的文件:' + str(path))

else:
    logger.error('输入的文件夹或者目录不存在!')

以上就是自动整理文件的全部代码块的实现部分,使用时依次将代码块copy到自己的开发工具中直接启动就可。

进阶

当文件在不同路径下,又该如何实现批量管理呢,下面是实现的代码,可以参考一下

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自动整理文件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python操作Mysql实例代码教程在线版(查询手册)
Feb 18 Python
python基础之入门必看操作
Jul 26 Python
使用Python写一个小游戏
Apr 02 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
Jul 13 Python
对python中if语句的真假判断实例详解
Feb 18 Python
Ubuntu18.04下python版本完美切换的解决方法
Jun 14 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
Nov 06 Python
wxPython实现绘图小例子
Nov 19 Python
使用K.function()调试keras操作
Jun 17 Python
python实现AdaBoost算法的示例
Oct 03 Python
python自动打开浏览器下载zip并提取内容写入excel
Jan 04 Python
python urllib库的使用详解
Apr 13 Python
Pandas-DataFrame知识点汇总
Mar 16 #Python
python 安全地删除列表元素的方法
Mar 16 #Python
python turtle绘制多边形和跳跃和改变速度特效
Python中的turtle画箭头,矩形,五角星
Mar 16 #Python
Python学习之异常中的finally使用详解
Mar 16 #Python
Python实现抖音热搜定时爬取功能
Mar 16 #Python
Python3的进程和线程你了解吗
Mar 16 #Python
You might like
PHP similar_text 字符串的相似性比较函数
2010/05/26 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
2013/02/06 PHP
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
2013/06/25 PHP
全面解析PHP操作Memcache基本函数
2016/07/14 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
javascript 定义新对象方法
2010/02/20 Javascript
jQuery插件原来如此简单 jQuery插件的机制及实战
2012/02/07 Javascript
JavaScript var声明变量背后的原理示例解析
2013/10/12 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
jquery实现更改表格行顺序示例
2014/04/30 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
2015/06/05 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
2016/09/14 Javascript
js调用屏幕宽度的简单方法
2016/11/14 Javascript
bootstrap提示标签、提示框实现代码
2016/12/28 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
jQuery实现参数自定义的文字跑马灯效果
2018/08/15 jQuery
其实你可以少写点if else与switch(推荐)
2019/01/10 Javascript
uniapp,微信小程序中使用 MQTT的问题
2020/07/11 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
2020/09/22 Javascript
JavaScript对象访问器Getter及Setter原理解析
2020/12/08 Javascript
[02:12]DOTA2英雄基础教程 变体精灵
2013/12/16 DOTA
[41:13]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第一场 11.20
2020/11/20 DOTA
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
python DataFrame 取差集实例
2019/01/30 Python
pytorch 修改预训练model实例
2020/01/18 Python
HTML5实现视频直播功能思路详解
2017/11/16 HTML / CSS
机工车间主任岗位职责
2014/03/05 职场文书
美容院店长岗位职责
2014/04/08 职场文书
程序员求职信
2014/04/16 职场文书
2016大学自主招生推荐信范文
2015/03/23 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
优秀团员主要事迹范文
2015/11/05 职场文书
学校学习型党组织建设心得体会
2019/06/21 职场文书
MySQL基础(二)
2021/04/05 MySQL