最终效果如下:
每种文件类型都整理成如下结构:
一、定义一个·move_all_kind_files·函数,将文件按照如下逻辑移动
import os, shutil
def move_all_kind_files(file_name, file_path, dst, file_kind):
# 四个参数,分别表示文件名、文件路径、移动的目标路径、文件的种类
# 移动的文件种类
kind = file_kind
# 移动二三部的数据文件
if '三部' in file_name or '二部' in file_name or '壹际莆田' in file_name or '达亿' in file_name \
or '奇鲜' in file_name or '路嵩' in file_name or '英格拉' in file_name or '和奇达' in file_name:
if '美国' in file_name or '墨西哥' in file_name or '北美' in file_name:
target_dir = os.path.join(dst,kind,'二三部\北美')
if not os.path.exists(target_dir):
os.makedirs(target_dir)
shutil.move(file_path, target_dir + '\\' + file_name) # 主要功能,shutil.move()实现移动,shutil.copy()复制
else:
target_dir = os.path.join(dst,kind,'二三部\欧洲')
if not os.path.exists(target_dir):
os.makedirs(target_dir)
shutil.move(file_path, target_dir + '\\' + file_name)
# 移动管理亚马逊库存的沃尔玛
elif '沃尔玛' in file_name:
target_dir = os.path.join(dst,kind,'沃尔玛')
if not os.path.exists(target_dir):
os.makedirs(target_dir)
shutil.move(file_path, target_dir + '\\' + file_name)
# 移动一部的数据文件
else:
if '美国' in file_name or '加拿大' in file_name or '北美' in file_name or '墨西哥' in file_name:
target_dir = os.path.join(dst,kind,'一部\北美')
if not os.path.exists(target_dir):
os.makedirs(target_dir)
shutil.move(file_path, target_dir + '\\' + file_name)
elif '日本' in file_name:
target_dir = os.path.join(dst,kind,'一部\日本')
if not os.path.exists(target_dir):
os.makedirs(target_dir)
shutil.move(file_path, target_dir + '\\' + file_name)
else:
target_dir = os.path.join(dst,kind,'一部\欧洲')
if not os.path.exists(target_dir):
os.makedirs(target_dir)
shutil.move(file_path, target_dir + '\\' + file_name)
二、定义一个src_files函数,获取每个文件的文件路径,根据文件路径中的文件名来判断该文件应该移动到哪里
# 获取某个文件夹下的所有文件路径,返回值是文件路径的列表
def src_files(src_path):
# 存放路径的空列表
file_path_list = []
# os.walk()遍历每一层文件夹。root是路径,dirs返回文件夹列表,files返回文件列表
for root,dirs,files in os.walk(src_path):
for file in files:
file_path = os.path.join(root,file) # 每一个文件用os.path.join()连接成完整路径
file_path_list.append(file_path)
return file_path_list
三、定义主函数main,首先调用src_files函数,获取文件路径,并用for循环每一个文件,切分出文件名,接着是一个文件类型列表,存放不同的需要自动化整理的文件类型(后续可继续添加其他类型),再for循环每种文件类型,把每个文件都调用move_all_kind_files函数,实现里面的自动化整理文件的逻辑。
def main(src,dst):
for file_path in src_files(src):
file_name = file_path.split('\\')[-1]
# 要移动的文件种类,文件的名字必须在文件种类里才能移动。
file_kind = ['交易汇总', '交易明细','结算一览','亚马逊配送货件', '预留库存', '延迟交易',
'管理亚马逊库存','月度仓储费', '长期仓储费','商品推广','展示型推广','品牌推广',
'移除订单','所有订单','日期范围报告-交易-CSV','日期范围报告-交易-PDF','已接收库存',
'库存动作详情','买家退货','移除货件详情']
# 遍历每个种类,判断文件是哪一种类型,调用移动文件函数,实现移动功能
for kind in file_kind:
if kind in file_name:
move_all_kind_files(file_name,file_path,dst,kind)
print(f'所有{kind}数据移动完成!!')
最后给出两个路径,启动main函数,从哪里(src)移动到哪里(dst)
# src:源文件夹路径 dst:移动到目标文件夹路径
src = r'C:\Users\Administrator\Desktop\Super Browser'
dst = r'C:\Users\Administrator\Desktop\2023年2月数据'
main(src,dst)