平时工作没有养成分类的习惯,整个桌面杂乱无章都是文档和资料,几乎快占满整个屏幕了。所以必须要整理一下了,今天我们来看下用python如何批量将不同后缀的文件移动到同一文件夹。

演示效果:

  • 使用前

  • 使用后

代码:

# # -*- coding:utf-8 -*-
import os
import glob
import shutil
import tkinter
import tkinter.filedialog
import filecmp
from datetime import datetimedef start():"""tkinter弹出窗口获取文件路径path。"""root = tkinter.Tk()root.withdraw()dirname = tkinter.filedialog.askdirectory(parent=root, initialdir="/", title='请选择文件夹')return dirname
def check_repeat_file(path):"""去掉重复文件"""dir_path = pathfile_lst = []file_count = 0for i in glob.glob(dir_path + '/**/*', recursive=True):if os.path.isfile(i):file_lst.append(i)file_count += 1print("\n检查文件计数:%d" % file_count, end='')for x in file_lst:for y in file_lst:if x != y and os.path.exists(x) and os.path.exists(y):if filecmp.cmp(x, y):os.remove(y)print('\n移除重复文件:%d'%y)def JudgeFile(suffix):"""定义一个函数,传入每个文件对应的后缀。判断文件是否存在于字典file_dict中;如果存在,返回对应的文件夹名;如果不存在,将该文件夹命名为"未知分类";定义一个文件字典,不同的文件类型,属于不同的文件夹"""file_dict = {"图片": ["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", "xlsm", "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", "cpp", "java", "css", "sql"],'可执行程序': ['exe', 'bat', 'lnk', 'sys', 'com', 'apk'],'字体文件': ['eot', 'otf', 'fon', 'font', 'ttf', 'ttc', 'woff', 'woff2', 'shx'],'工程图文件': ['bak', 'dwg', 'dxf', 'dwl', 'dwl2', 'stp', 'SLDPRT', 'ipj', 'ipt', 'idw']}for name, type_list in file_dict.items():if suffix.lower() in type_list:return namereturn "未知分类"def deldir(path):"""清理空文件夹和空文件path: 文件路径,检查此文件路径下的子文件"""try:files = os.listdir(path)  # 获取路径下的子文件(夹)列表for file in files:
#             print('遍历路径:'+os.fspath(path + '/' + file))if os.path.isdir(os.fspath(path+'/'+file)):  # 如果是文件夹if not os.listdir(os.fspath(path+'/'+file)):  # 如果子文件为空print(file+'是空文件夹,即将执行删除操作')os.rmdir(os.fspath(path+'/'+file))  # 删除这个空文件夹else:
#                     print(file+'不是空文件夹')deldir(os.fspath(path+'/'+file))  # 遍历子文件if not os.listdir(os.fspath(path+'/'+file)):  # 如果子文件为空print(file+'是空文件夹,即将执行删除操作')os.rmdir(os.fspath(path+'/'+file))  # 删除这个空文件夹elif os.path.isfile(os.fspath(path+'/'+file)):  # 如果是文件if os.path.getsize(os.fspath(path+'/'+file)) == 0:  # 文件大小为0print(file+'是空文件,即将执行删除操作!')os.remove(os.fspath(path+'/'+file))  # 删除这个文件returnexcept FileNotFoundError:print("\n文件夹路径错误")def main():"""主函数,根据文件后缀整理文件path: 文件路径,检查此文件路径下的子文件"""try:path = start()print("路径是:\n ", path)check_repeat_file(path)if path == "":print("没有选择路径!")# 递归获取 "待处理文件路径" 下的所有文件和文件夹。for file in glob.glob(f"{path}/**/*", recursive=True):# 由于我们是对文件分类,这里需要挑选出文件来。if os.path.isfile(file):# 由于isfile()函数,获取的是每个文件的全路径。这里再调用basename()函数,直接获取文件名;file_name = os.path.basename(file)suffix = file_name.split(".")[-1]# 判断 "文件名" 是否在字典中。name = JudgeFile(suffix)# 根据每个文件分类,创建各自对应的文件夹。if not os.path.exists(f"{path}\\{name}"):os.mkdir(f"{path}\\{name}")print('path-->', name)# 将文件复制到各自对应的文件夹中。# shutil.copy(file, f"{path}\\{name}")# 将文件移动到各自对应的文件夹中。shutil.move(file, f"{path}\\{name}")deldir(path)print("\n已经整理完成。")except BaseException:print('\n出现未知错误!')if __name__ == '__main__':main()

执行起来很简单,只要写完程序,点击程运行,等待弹出窗口,选择需要整理的文件夹即可。

如果觉得以上代码觉得复杂,可以尝试以下更为简单的程序。

# 如何实现文件自动分类?
# 同一目录下存在很多不同类型的资源条件
# 1.分类
# 2.创建分类目录
# 3.移动文件资源import os
import shutil
import tkinter
import tkinter.filedialog
from datetime import datetimedef start():root = tkinter.Tk()root.withdraw()dirname = tkinter.filedialog.askdirectory(parent=root,initialdir="/",title='请选择文件夹')return dirname# 源文件存在路径
src_dir=start()
# 分类资源存在路径
dest_dir=src_dir
# 判断目录是否存在
if not os.path.exists(dest_dir):os.mkdir(dest_dir)
# 源目录分析
files=os.listdir(src_dir)
for item in files:src_path=os.path.join(src_dir,item)# 判断状态if os.path.isfile(src_path):#如果是文件,进入代码块# 判断文件资源的类型ndir = item.split('.')[-1]desc_path=os.path.join(dest_dir,ndir)# 创建分类目录if not os.path.exists(desc_path):# 如果分类子目录不存在,创建os.mkdir(desc_path)shutil.move(src_path,desc_path)

python自动整理文件,就这么简单相关推荐

  1. python3 自动整理文件(超简单代码)

    思路: 1.在该文件夹里面创建子文件夹 2.判断该文件夹里面所有文件的格式,也就是什么后缀名 3.将文件进行重命名并放入刚创建好的子文件夹中 4.两种整理办法: (1)利用shutil.copy这个函 ...

  2. python自动整理文件夹_计算机文件和文件夹的Python自动管理,自动化,电脑,及

    目录 一.输出目录所在的文件以及文件夹 import os print(os.getcwd())#获得当前文件的地址 print(os.path.join('MyProjects','AI'))#让P ...

  3. python文件整理程序_Python实现自动整理文件的脚本

    前言 工作上的文档和资料好几个月没整理了,因为平常太忙都是随手往桌面丢.整个桌面杂乱无章全是文档和资料.几乎快占满整个屏幕了,所有我必须要整理一下了.但是手动整理太费时间了,于是我想到了python. ...

  4. python 自动下载文件_【Py大法系列--03】Python如何自动下载文件

    问题描述 Python自动下载文件,通用文件,包括但不限于压缩文件.图片等. 解决方法 一般情况下,Python下载文件的方式有以下几种: 利用urllib.urllib2,即Python爬虫用的最多 ...

  5. 一键自动整理文件!简单好用的Python脚本

    我以前经常把下载的东西放在桌面或者"下载"文件夹中,使用后再也没管它,久而久之文件夹就变得乱七八糟,再整理的时候非常痛苦,巴不得有一个自动化的工具帮我归类文档. 不知道你是不是有过 ...

  6. 教你写个简单好用的Python脚本一键自动整理文件非常适合办公用~

    导语 小编以前经常把下载的东西放在桌面或者"下载"文件夹中,使用后再也没管它,久而久之文件夹就变得乱七八糟,再整理的时候非常痛苦,巴不得有一个自动化的工具帮我归类文档. 不知道你是 ...

  7. 一键自动整理文件!简单好用的 Python 脚本

    我以前经常把下载的东西放在桌面或者 "下载" 文件夹中,使用后再也没管它,久而久之文件夹就变得乱七八糟,再整理的时候非常痛苦,巴不得有一个自动化的工具帮我归类文档 不知道你是不是有 ...

  8. 用Python脚本一键自动整理文件,轻松办公

    嗨嗨,大家下午好~ 我是小圆 因为自己对于电脑上的文件不怎么爱整理,经常把下载好的东西就随意的放在桌面上或者"下载"文件夹中,就使用过后再也没去管它了.久而久之,文件夹就变得乱七八 ...

  9. Python自动化整理文件,还增加了可视化GUI界面

    有时候,我们写了一些简单.有用的小代码. 此时,如果能够有一个可视化GUI界面,是不是显得很舒服.今天介绍的一个Python库,超级牛逼,几行代码就可以实现一个可视化界面! Gooey介绍 这里用到的 ...

最新文章

  1. Atitit 桌面软件跨平台gui解决方案 javafx webview
  2. jetson nano 实现车牌识别
  3. VS2010 + OpenGL 及 第一个实例
  4. 在不安装mysql-connector-net的情况下使用FluentData框架
  5. 计算机丢失pcdsp.dll,计算机libcef.dll丢失
  6. 【linux】linux Vim编辑器快捷键
  7. 关于如何查看 EntityValidationErrors 详细信息的解决方法
  8. 关于C#多线程之一——异步委托
  9. 图表设计-远不止“好看”这么简单
  10. Ink脚本语言学习笔记(四)
  11. vb UBound 数据上界
  12. 黑苹果是否会成为mac电脑的竞争对手?
  13. java xmap_xml和java Bean的直接转换,Xmap
  14. 85寸电视机长宽是多少
  15. 腾讯社招iOS面试记录
  16. Android 9 (P)之init进程启动源码分析指南之三
  17. windows7是计算机硬件吗,Windows7硬件最低配置要求介绍
  18. 教程:怎样处理资源管理器崩溃退出的问题
  19. Mapgis比例尺和出图
  20. PLSQL绿色版安装及配置

热门文章

  1. java解析小程序encryptedData
  2. 【CF#538div2:C】Trailing Loves (or L'oeufs?)(质因数分解+分析)
  3. 网易相册辅助工具netease album v0.1 是什么
  4. 均质机工作原理动画_【绝对原创,高压均质机结构图】
  5. 【经典算法】N001:得分排行
  6. android ndk 段错误,利用NDK崩溃日志查找BUG
  7. 南大软件分析 前5节笔记
  8. PC端RTMP播放工具(EXE,非源码)
  9. 日本敏捷运动的过去和现在
  10. javaFx 实现----桌面端音乐播放器