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 相关文章推荐
Python3实现连接SQLite数据库的方法
Aug 23 Python
浅谈Python实现Apriori算法介绍
Dec 20 Python
python requests 测试代理ip是否生效
Jul 25 Python
Linux下多个Python版本安装教程
Aug 15 Python
python redis 删除key脚本的实例
Feb 19 Python
python使用HTMLTestRunner导出饼图分析报告的方法
Dec 30 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
Apr 30 Python
Python 解决相对路径问题:"No such file or directory"
Jun 05 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
Jul 15 Python
Python之字典对象的几种创建方法
Sep 30 Python
关于python3.9安装wordcloud出错的问题及解决办法
Nov 02 Python
浅谈Selenium+Webdriver 常用的元素定位方式
Jan 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 文本文章分页代码 按标记或长度(不涉及数据库)
2012/06/07 PHP
php+xml编程之SimpleXML的应用实例
2015/01/24 PHP
php 魔术常量详解及实例代码
2016/12/04 PHP
PHP中的正则表达式实例详解
2017/04/25 PHP
jquery.ui.progressbar 中文文档
2009/11/26 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
IE6 hack for js 集锦
2014/09/23 Javascript
JavaScript极简入门教程(三):数组
2014/10/25 Javascript
jQuery实现类似淘宝网图片放大效果的方法
2015/07/08 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
打造自己的jQuery插件入门教程
2016/09/23 Javascript
weUI应用之JS常用信息提示弹层的封装
2016/11/21 Javascript
Vue实战之vue登录验证的实现代码
2017/10/31 Javascript
JavaScript DOM元素常见操作详解【添加、删除、修改等】
2018/05/09 Javascript
vue-cli3中vue.config.js配置教程详解
2019/05/29 Javascript
[00:21]DOTA2亚洲邀请赛 Logo演绎
2015/02/07 DOTA
python输出100以内的质数与合数实例代码
2018/07/08 Python
详解Django将秒转换为xx天xx时xx分
2019/09/27 Python
python yield关键词案例测试
2019/10/15 Python
python利用Excel读取和存储测试数据完成接口自动化教程
2020/04/30 Python
python上下文管理的使用场景实例讲解
2021/03/03 Python
Baracuta官方网站:Harrington夹克,G9,G4,G10等
2018/03/06 全球购物
婴儿鞋,独特的婴儿服装和配件:Zutano
2018/11/03 全球购物
美国婴儿服装购物网站:Gerber Childrenswear
2020/05/06 全球购物
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
大型晚会策划方案
2014/02/06 职场文书
幼儿园消防演练方案
2014/02/13 职场文书
会计核算科岗位职责
2014/03/19 职场文书
企业宣传标语
2014/06/09 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
2014年学校领导班子对照检查材料
2014/09/19 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
运输公司工作总结
2015/08/11 职场文书
小学总务工作总结
2015/08/13 职场文书
小学五年级(说明文3篇)
2019/08/13 职场文书
Android开发EditText禁止输入监听及InputFilter字符过滤
2022/06/10 Java/Android