背景介绍
最近工作忙的焦头烂额的,需求一件接着一件,有好多事情人工来做非常的浪费时间,只好开发一些小的脚本来快速解决某些问题,就像现在有一个需求尽快解决,需求背景为:目前有A、B两个文件夹,A文件夹中存储的是原始的文件,B文件夹存储的是A文件夹中文件经过逻辑处理后的文件,需要找到A文件夹中存在而B文件夹中不存在的文件将这些文件存储在C文件夹下。
注意事项A、B文件夹有区别就是A文件夹中的文件与B文件夹中的文件文件名相同文件后缀不同
A、B文件夹下的文件有一部分文件的文件名中存在点(.)等特殊符号也就是说使用点(.)进行分割也不会特别的准确
使用模块
os
shutil
思考步骤获取A、B文件夹下的所有文件名(包括后缀)
使用方法切分出不包含后缀的文件名
获取A和B文件夹的差集
根据不包含文件后缀的差集找寻A文件夹下响应的文件
将文件逐个存储到C文件夹下
实现方法
import os
import shutilold_files_path = r"C:\Users\A" # A文件夹位置
new_files_path = r"C:\Users\B" # B文件夹位置
lou_path = r"C:\Users\C" # C文件夹位置
old_files_s = os.listdir(old_files_path) # 得到文件夹下的所有文件名称
new_files_s = os.listdir(new_files_path) # 得到文件夹下的所有文件名称
old_files = [os.path.splitext(i)[0] for i in old_files_s] # 去除文件后缀名生成list
new_files = [os.path.splitext(i)[0] for i in new_files_s] # 去除文件后缀名生成list
c_files = list(set(old_files).difference(set(new_files))) # 获取差集for i in old_files_s:
name = os.path.splitext(i)[0]
if name in c_files:
src = old_files_path + "/" + i # 拼接老文件夹路径
dst = lou_path +"/"+i # 拼接新文件夹路径
shutil.move(src, dst) # 将A文件夹中符合条件的文件转移到C文件夹中