Python 从路径文件中找到匹配特定内容的文件

需求说明:
从特定路径下的文件中,找到包含特定字符的文件,并放入指定的目录下,同时输出匹配文件的excel表格,打开文件错误的表格
代码实现如下:

import os 
import shutil
from openpyxl import Workbook
import time
wb = Workbook()
ws1 = wb.create_sheet('找到的文件目录')
def print_list(name,l):#定义打印函数
    print(name)
    for i in l:
        print(i)
	
def find_specific_file(file_path,s): #表示文件中的字符内容
    if not os.path.exists(file_path):
        print('路径不存在,请重新输入')#判断非法路径
        return None
    if not isinstance(s,str):
        print('输入匹配内容非字符串格式,请重新输入')#判断非法字符
        return None
    file_error_list=[]
    file_find_list=[]
    file_all_count=0
    file_find_count=0
    file_error_count=0
    ws1.cell(row=1,column = 1, value='匹配文件列表')
    ws1.cell(row=1,column = 2, value='打开错误文件列表')
    i=1
    j=1
    for root,dirs,files in os.walk(file_path):
        for file in files:
            file_all_count+=1
            try:
                try:
                    with open(file_path+'\\'+file,'r',encoding='ANSI') as fp:
                        content = fp.read()			
                        if s in content:
                            #print(file) #打印file的名字
                            file_find_list.append(file)#匹配文件加入到列表中
                            shutil.copyfile(file_path+'\\'+file,'e:\\file_find'+'\\'+file)#将找到的文件复制到指定目录
                            file_find_count+=1 #匹配文件计数
                            i+=1
                            ws1.cell(row=i,column = 1, value=file)#将匹配的文件名写入的excel表格中
                except:
                    with open(file_path+'\\'+file,'r',encoding='utf-8') as fp:
                        content = fp.read()			
                        if s in content:
                            #print(file) #打印file的名字
                            file_find_list.append(file)#匹配文件加入到列表中
                            shutil.copyfile(file_path+'\\'+file,'e:\\file_find'+'\\'+file)#将找到的文件复制到指定目录
                            file_find_count+=1 #匹配文件计数
                            i+=1
                            ws1.cell(row=i,column = 1, value=file)#将匹配的文件名写入的excel表格中  
            except Exception as error:
                #print(error)
                #print('不能打开的文件名称:%s' %file)
                file_error_list.append(file)#错误文件放入到列表中
                file_error_count+=1 #错误文件计数
                j+=1
                ws1.cell(row=j,column = 2, value=file) #将匹配的文件名写入的excel表格中 

    print('遍历文件%s个,找到匹配的文件%s个,打开错误的文件%s' %(file_all_count,file_find_count,file_error_count))
    print_list('匹配文件列表:',file_find_list)
    #print_list('打开错误文件列表:',file_error_list)
    wb.save('e:\\find_file.xlsx')    
    return None

time1=time.time()
find_specific_file('e:\\config','lns')#执行函数
time2=time.time()
print('耗时:',time2-time1) #打印耗时
find_specific_file('e:\\config',['aaaaaaaa'])#测试错误字符
find_specific_file('e:\\config\\2jfa','lns')#测试错误路径

你可能感兴趣的:(个人python小程序)