python3 批量查找目标文件,查找表格中的两列目标文件(n列都可以……)

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.查找路径需要自行修改
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值