1 # -*- coding: utf-8 -*- 2 # -主要思路-,获取解压后的日志文件包 3 # -获取特定目录下的excel表格,将数据复制出来 4 import xdrlib ,sys 5 import xlrd 6 import os 7 import time 8 class Search_Excel_From_Dir: 9 #file_name = "example"#此处确定要搜寻的文件名字 10 Bdc_Csv_list = []#Excel文件列表 11 Bdc_Csv_Dir_list = []#Excel文件所在目录的列表 12 #此处自定义函数判断文件类型是不是表格类型 13 def IsExcel(self,file): 14 compress = [".xlsx",".csv"] 15 for z in compress: 16 if file.endswith(z):#描述:判断字符串是否以指定字符或子字符串结尾. 17 return True 18 return False 19 20 #判断是否是ubp_bdc_01表格文件 21 def IsBdcCsvFile(self, fileName): 22 [dirname, filename] = os.path.split(fileName) 23 BdcFiles = set(["ubp_bdc01_info"]) 24 for nameFile in BdcFiles: 25 if nameFile in filename: 26 return True 27 else: 28 continue 29 return False 30 31 #递归查看某个文件夹下面的所有Excel文件 32 def FindBDCCsvFile(self, fileDirPath): 33 fileNames = os.listdir(fileDirPath) 34 for file in fileNames: 35 filePath = str(fileDirPath) + "\" + str(file) 36 if os.path.isdir(filePath): 37 self.FindBDCCsvFile(filePath) 38 elif os.path.isfile(filePath): 39 #此处判断是否是BDC日志巡检所需的文件,同时判断文件类型是否是Excel类型 40 if self.IsBdcCsvFile(filePath) == True and self.IsExcel(filePath) == True: 41 #此处添加Excel文件的绝对路径名到文件名列表里面去 42 self.Bdc_Csv_list.append(filePath) 43 [dirname, filename] = os.path.split(filePath) 44 #此处添加Excel文件夹的路径到文件夹路径列表里面去 45 self.Bdc_Csv_Dir_list.append(dirname) 46 else: 47 continue 48 else: 49 continue 50 51 #先获取特定目录下的excel表格: 52 #1.进入指定目录 53 #2.获取excel文件 54 #3.打印所有同目录下的文件 55 def Find_Excel(self,filePath): 56 [dirname, filename] = os.path.split(filePath) 57 os.chdir(dirname)#os.chdir()方法用于改变当前工作目录到指定的路径,路径是"D:日志巡检存放路径" 58 path = os.getcwd()#os.getcwd() 方法用于返回当前工作目录,工作目录为"D:日志巡检存放路径" 59 file_names = os.listdir("./")#os.listdir()方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。这个列表以字母顺序。 60 #它不包括 '.' 和'..' 即使它在文件夹中。只支持在Unix,Windows下使用。 61 for i in range(len(file_names)): 62 print(file_names[i]) 63 64 def Run(self): 65 #self.Find_Excel("D:日志巡检存放路径") 66 self.FindBDCCsvFile("D:多bdc日志临时放置地方") 67 for i in range(0,len(self.Bdc_Csv_list)): 68 #self.open_excel(self.Bdc_Csv_list[i]) 69 self.Find_Excel(self.Bdc_Csv_list[i]) 70 print(self.Bdc_Csv_Dir_list[i]) 71 72 ''' 73 #打开excel文件 74 def open_excel(self,file_csv): 75 try: 76 data = xlrd.open_workbook(file_csv) 77 return data 78 except IOError: 79 print("check the file's name") 80 81 #根据名称获取Excel表格中的数据 参数:file:Excel文件路径 colnameindex:表头列名所在行的索引 ,by_name:Sheet1名称 82 def excel_table_byname(file= 'example.xlsx', colnameindex=0, by_name=u'Sheet1'): 83 data = open_excel(file) #打开excel文件 84 table = data.sheet_by_name(by_name) #根据sheet名字来获取excel中的sheet 85 nrows = table.nrows #行数 86 colnames = table.row_values(colnameindex) #某一行数据 87 list =[] #装读取结果的序列 88 for rownum in range(0, nrows): #遍历每一行的内容 89 row = table.row_values(rownum) #根据行号获取行 90 if row: #如果行存在 91 app = [] #一行的内容 92 for i in range(len(colnames)): #一列列地读取行的内容 93 app.append(row[i]) 94 list.append(app) #装载数据 95 #print(list) 96 return list 97 ''' 98 99 100 #'ubp_bdc01_info.csv'