赞
踩
python3 批量查找目标文件,查找表格中的两列目标文件(n列都可以……)
import pandas as pd import os import shutil import logging logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') logger = logging.getLogger(__name__) print('\n') # 查找目录 # rootdir = os.getcwd() #当面目录下查找 rootdir = r'F:\项目' # 指定目录下查找 print('本次查找路径为:' + rootdir) print('\n') input('请确认查找路径是否正确!若确认正确,请按回车开启查找文件!!!若路径不准确,请修改!') logger.info('开始查找,') # 列出指定目录下所有文件夹路径 def list_all_files(rootdir): _files = [] list = os.listdir(rootdir) # 列出文件夹下所有的目录与文件 for i in range(0, len(list)): path = os.path.join(rootdir, list[i]) # 合并路径,将rootdir和list合并 if os.path.isdir(path): _files.extend(list_all_files(path)) # 递归调用函数 if os.path.isfile(path): _files.append(path) return _files def foundmage(i, filename): df = pd.read_excel("getimage.xlsx") # 读取表格中的找到目标文件 Image = [] # 查找目标文件读取保存列表中 for index, row in df.iterrows(): Image.append(row[i]) # 读取添加到列表中 ids = list(set(Image)) # 目标文件列表除重 if len(Image) != 0: # 创建保存目录 path_mb = os.path.join(os.getcwd(), filename) if not os.path.exists(path_mb): os.makedirs(path_mb) savepath = os.path.join(os.getcwd(), filename) # 保存路径 notfound = [] # 创建找不到的目标文件列表 found = [] # 创建找到目标文件列表 file = list_all_files(rootdir) # 获取了指定目录下所有文件夹路径 for objectfile in ids: # 循环输出查找目标文件 n = 1 # 查找次数初始值 for filepath in file: # 循环输出文件路径 if str(objectfile) == str(filepath.split('\\')[-1]): # 判断目标文件和所有文件路径的文件去对比名称是否一致 shutil.copy(filepath, savepath) # 一致就去复制到指定目录下 logger.info('经过' + str(n) + '次查找,找到目标文件《' + objectfile + '》,已复制到当前《' + filename + '》') found.append(objectfile) break # 找到后就终止本次查找,进行下个文件查找 else: if n == len(file): # 查找次数等于所有文件夹列表数时(找到最后一个路径也不是目标文件时),就判断找不到了 logger.error('未找到此文件,《' + str(objectfile) + '》') notfound.append(objectfile) # 将未找到的目标文件添加到未找到的列表中 n += 1 print('\n') if len(notfound) == 0: # 未找到列表等于0就判断,所有文件都找到了了 print(filename + '全部' + str(len(ids)) + '个目标文件,已找到' + str(len(found)) + '个文件,已全部查找完成,就没有找不到的文件…… 哈哈哈!!!!!!!') print('*********************************************************************************************************************') print('\n') else: print('警告!警告!警告!\n ' + filename + '全部' + str(len(ids)) + '个目标文件,已找到' + str(len(found)) + '个目标文件,有' + str( len(notfound)) + "个目标文件没有找到!!!") print(notfound) # 未找到列表不等于0时,输出为找到目标文件列表 print('*********************************************************************************************************************') print('\n') else: logger.info(str(filename) + '中没有要查找的文件,若需要请在表格中添查找文件') print( '*********************************************************************************************************************') print('\n') if os.path.exists(os.path.join(os.getcwd(), 'getimage.xlsx')): logger.info('开始查找第一列目标文件!!!') foundmage(0, '第一列目标文件') print('\n') logger.info('开始查找第二列目标文件!!!') foundmage(1, '第二列目标文件') else: logger.info('当前文件夹下不存在“getimage.xlsx”表格文件,请创建文件,并添加查找目标文件名称到表格中……') input('Press Enter to exit...')
需要批量查找目标文件
注:
1.从第二行开始读取,也就是目标文件的文字行不读取
2.Excel,格式为xlsx
3.查找路径需要自行修改
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。