Python实现批量自动整理文件
为了实现这样的小工具,我们先设想有下面这些功能。
1、可以自定义整理某一个路径下面的所有需要被整理的文件。
2、默认情况下,使用文件后缀作为同一种类文件的文件夹名称,有其他想法的小伙伴可自行扩展。
将使用到的python模块导入到代码块中。
import os # 文件/文件夹应用操作 import shutil # 移动文件 import logging # 使用日志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("输入的文件夹或者目录不存在!")
以上就是自动整理文件的全部代码块的实现部分,使用时依次将代码块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自动整理文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?