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的Supervisor进行进程监控以及自动启动
May 29 Python
Python实现从url中提取域名的几种方法
Sep 26 Python
初步介绍Python中的pydoc模块和distutils模块
Apr 13 Python
python3实现163邮箱SMTP发送邮件
May 22 Python
便捷提取python导入包的属性方法
Oct 15 Python
python实现定时发送qq消息
Jan 18 Python
numpy数组广播的机制
Jul 12 Python
Flask 上传自定义头像的实例详解
Jan 09 Python
解决python 执行sql语句时所传参数含有单引号的问题
Jun 06 Python
python实现梯度下降算法的实例详解
Aug 17 Python
Python实现简单猜数字游戏
Feb 03 Python
Python通过m3u8文件下载合并ts视频的操作
Apr 16 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 adodb连接不同数据库
2009/03/19 PHP
php实现简单文件下载的方法
2015/01/30 PHP
PHP检测用户是否关闭浏览器的方法
2016/02/14 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
php获取微信openid方法总结
2019/10/10 PHP
this[] 指的是什么内容 讨论
2007/03/24 Javascript
jQuery 表格工具集
2010/04/25 Javascript
JS构建页面的DOM节点结构的实现代码
2011/12/09 Javascript
JQuery的read函数与js的onload不同方式实现
2013/03/18 Javascript
从数组中随机取x条不重复数据的JS代码
2013/12/24 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
2014/03/28 Javascript
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
js控制网页前进和后退的方法
2015/06/08 Javascript
jQuery on()方法示例及jquery on()方法的优点
2015/08/27 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
2015/12/03 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
2017/02/27 Javascript
Node.js学习教程之HTTP/2服务器推送【译】
2017/10/31 Javascript
JS数组去重常用方法实例小结【4种方法】
2018/05/28 Javascript
vue自定义移动端touch事件之点击、滑动、长按事件
2018/07/10 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
vue-自定义组件传值的实例讲解
2018/09/18 Javascript
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
python网络编程学习笔记(一)
2014/06/09 Python
Python max内置函数详细介绍
2016/11/17 Python
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
python3.5 email实现发送邮件功能
2018/05/22 Python
简单了解django缓存方式及配置
2019/07/19 Python
Linux系统下升级pip的完整步骤
2021/01/31 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的代码
2020/11/30 HTML / CSS
免费获得微软MCSD证书赶快行动吧!
2012/11/13 HTML / CSS
会计实习生自我鉴定
2013/12/12 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
2015年科普工作总结
2015/07/23 职场文书
董事长致辞
2015/07/29 职场文书
公司员工离职感言
2015/08/03 职场文书
2016年中秋节寄语大全
2015/12/07 职场文书