最近帮朋友处理一件工作的时候,发现其有很多文件归纳的任务,其都是手工一个一个复制到新建的文件夹,工作机械且很容易出错,这里写了一个文件自动归纳整理的程序,能快速实现文件的自动归类整理。
下面是一个所有人名资料混合在一起的一个文件夹,能看到有111个项目,如果人工一个一个复制很容易出错。现在的任务是需要将每个人的资料提取出来,并且单独存储到各自的文件夹中。
示例代码如下,执行过程中将要进行归类的文件路径复制输入即可:
import os
import re #导入正则模块,提取姓名用
import shutil #导入用来移动文件的模块
while True: #循环输入
path = input('请输入要整理文件所在路径') #记录输入的路径
try:
list1 = os.listdir(path) #遍历选择的文件夹
#以下操作使用正则提取文件名的汉字部分做文件名使用
list2 = [re.findall(r'[\u4e00-\u9fa5]',str) for str in list1]
list=[]
for i in list2:
if i not in list:
list.append(''.join(i))
for j in range(0,len(list1)): #遍历文件列表,这里仍然需要遍历list1,因为list1才是所有的文件,list只是一个单独的姓名列表
filepath = os.path.join(path,list1[j]) #记录遍历到的文件名
if os.path.isfile(filepath): #判断是否为文件
dirname = list[j] #使用处理过的list姓名列表里的姓名作为文件夹名
dirpath = os.path.join(path,dirname) #拼接文件夹路径
if not os.path.exists(dirpath): #判断文件夹路径是否存在
os.mkdir(dirpath)
shutil.move(filepath,os.path.join(dirpath,list1[j])) #移动文件进行整理
print('整理完成。。。')
except:
print('请输入一个有效路径')
执行结果如下,快速将各姓名文件归类到单独的文件夹:
注:本例如果文件名的前面几个字符数固定,如都是三个汉字,或者都是两个汉字,就不需要单独提取汉字的过程,直接使用切片提取文件名的前几个字符作为文件夹的名字,流程相对简单。