从网站下载的pdf或其他格式文件一般都是按年份分类的,如果我们想要按公司进行整理,例如,将一个公司各年份的年报都整理到一个文件夹,在公司数目很多的情况下,手动要耗费大量时间,下面是通过几段Python代码轻松解决这个问题。
首先,导入需要的模块
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
from pandas import Series,DataFrame
import os
import ssl
然后,定义一个可以读取指定路径的文件名的函数
def file_name_paths(path='D:/UP', find=None, case_sensitive=False):
'''目录下的所有文件,包括子目录,返回值为多个文件的完整路径列表
path: 路径
find:None:关闭过滤(搜索功能)
'.csv' 过滤.csv的文件
case_sensitive :区分大小写 默认为不区分
'''
path_collection=[]
for dirpath,dirnames,filenames in os.walk(path):
for file in filenames:
fullpath=os.path.join(dirpath,file)
if '~$' not in file.upper():
if case_sensitive:
if find:
if find in file:
path_collection.append(fullpath)
else:
path_collection.append(fullpath)
else:
if find:
if find.upper() in file.upper():
path_collection.append(fullpath)
else:
path_collection.append(fullpath)
else:
pass
return path_collection
锁定我们要分类的关键词,首次查询到关键词建立文件夹,后续将识别到关键词的文件放入文件夹即可。文件夹以关键词命名。
每次读取不同的文件夹,只需要改变路径path、path_1和关键词字段a(可以先print出a的结果多试几次,找到想要的关键词字段)
import shutil
file_name_list = file_name_paths(path=r'C:\Users\DELL\Desktop\住宿\2020住宿和餐饮业')
print(file_name_list)
for i in range(len(file_name_list)-2):
a = file_name_list[i][36:42]
#a是指定的文件关键词,对于不同的分类问题和文件夹路径,关键词需要修改,只需改变[]中数字即可
path = r'C:\Users\DELL\Desktop\住宿\2020住宿和餐饮业\\'+a
folder = os.path.exists(path)
if not folder:
os.mkdir(path)
shutil.move(file_name_list[i],path)
if a in file_name_list[i+1]:
shutil.move(file_name_list[i+1],path)
else:
path_1 = r'C:\Users\DELL\Desktop\住宿\2020住宿和餐饮业\\'+file_name_list[i+1][36:42]
os.mkdir(path_1)
shutil.move(file_name_list[i+1],path_1)
if a in file_name_list[i+2]:
shutil.move(file_name_list[i+2],path)
最后文件的分类结果如下: