运维开发网

Python实现批量自动文件排序

运维开发网 https://www.qedev.com 2022-10-01 14:42 出处:网络
本文将利用Python制作一个批量自动整理文件的小工具,可以自定义整理某一个路径下面的所有需要被整理的文件。感兴趣的小伙伴可以了解一下

本文将利用Python制作一个批量自动整理文件的小工具,可以自定义整理某一个路径下面的所有需要被整理的文件。感兴趣的小伙伴可以了解一下

要实现这样一个小工具,我们先想象一下下面的功能。

1.可以自定义某个路径下所有需要排序的文件,并进行排序。
2。默认使用文件后缀作为同类文件的文件夹名,有其他想法的朋友可以自行扩展。

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

import os # 文件/文件夹应用操作import shutil # 移动文件import logging # 使用日志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('输入的文件夹或者目录不存在!')

以上是文件自动排序的所有代码块的实现部分。使用时,将代码块复制到自己的开发工具中,直接启动。

先进的

当文件在不同路径时,如何实现批量管理?以下是代码,供您参考。

import osimport globimport 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--gt;',paths) for path in paths: try: if not os.path.isdir(path): file = os.path.splitext(path) filename,type = file print('type--gt;',type) print("filename--gt;",filename) print('path--gt;',path) dir_path = os.path.dirname(path) print('dir_path--gt;',dir_path) savePath = dir_path + '/{}'.format(self.filetype.JudgeFile(type)) print('savePath--gt;',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("----gt;你的文件已经整理完成。") a = input('----gt;请按回车键退出:') if a == '': break except BaseException: print("ERROE:路径错误或有重复的文档")

这样你就可以自由的整理出你想要的路径。

关于Python的自动批处理文件整理的这篇文章到此为止。关于Python自动文件整理的更多信息

0

精彩评论

暂无评论...
验证码 换一张
取 消