。1 #- * -コーディング:UTF-8 - * - 2 #-主なアイデア-ログファイルは、パッケージの抽出取得 3 #を-データをコピーし、特定のディレクトリの下の表をエクセル取得 4。 インポート xdrlib、SYSを 5。 インポートxlrdします 6 インポートOS 7 インポート時間 8 クラスSearch_Excel_From_Dir: 9 #ここ= "例" OK#file_nameには、ファイル名を検索する 10 Bdc_Csv_list = [] #のリストExcelのファイルを 11 Bdc_Csv_Dir_list = [] #のリストExcelファイル・ディレクトリの 12 #このカスタムファイルタイプを分析することで、テーブルの種類の関数ではない 13で DEFIsExcel(セルフ、ファイル): 14 圧縮= [ " の.xlsx "、" .CSV " ] 15 用の Z で圧縮: 16 IF file.endswith(Z):#1 説明:かどうかを指定した文字列またはサブストリングを決定します。終了 17。 リターン真 18は 戻り偽 19。 20 #ubp_bdc_01テーブルファイルか否かを判断 21である DEF IsBdcCsvFile(自己ファイル名): 22である [DIRNAME、ファイル名が= os.path.split(filename)で 23である BdcFiles SET =([ " ubp_bdc01_info" ]) 24 のための namefile でBdcFiles: 25 IF namefile でファイル名: 26 リターン真の 27 他: 28 インクルード続行 29 リターン偽 30 31 #次のExcelのすべてのファイルを再帰的なビューフォルダを 32 DEF FindBDCCsvFile(セルフ、fileDirPath): 33 =ファイル名os.listdir(fileDirPath) 34がある ため、ファイルにファイル名: 35 filePathに= STR(fileDirPath)+ " \\" + STR(ファイル) 36 IF os.path.isdir(filePathに): 37 [ self.FindBDCCsvFile(filePathに)が 38である のelif os.path.isfile(filePathに): 39 #BDCは、ログファイルは、検査のために必要か否かを判断しますそれは、ファイルタイプがタイプエクセルであるか否かを判断しながら、 40は IF真self.IsBdcCsvFile(filePathに)== と self.IsExcel(filePathに)== :真は 41 位中に入るためにここに絶対パス名Excelはファイル名のリストにファイルを追加します。 42 セルフ.Bdc_Csv_list.append(filePathに) 43である [DIRNAME、ファイル名] = os.path.split(filePathに) 44である #はフォルダパスリストの内側にここでフォルダのExcelへのパスを追加する 45 self.Bdc_Csv_Dir_list.append(DIRNAME) 46は、 他: 47は 続行 48を 、他: 49は 続行 50 51である #特定のディレクトリを取得するためにExcelの表: 52 #1は、指定されたディレクトリに入り 53 #2をExcelがファイルを取得 54 #すべて3.印刷をディレクトリ・ファイルと 55 DEF Find_Excel(自己ファイルパス): 56れる [DIRNAME、ファイル名] = os.path.split(filePathに) 57である (DIRNAME)os.chdir #os.chdir()メソッドは、現在の作業ディレクトリを変更するために使用され:指定されたパスは、パスが「\ログ検査ストレージパスD」である 58 パス= os.getcwd() #os.getcwd()メソッドは、現在の作業ディレクトリを返し、作業ディレクトリ「D:\検査ログ保存パス」 59 file_names os.listdir =(「./ 」)#os.listdir()メソッドは、指定を返しますフォルダが含まれているファイルやフォルダの名前をリストアップ。このリストは、アルファベット順にあります。 60 位には含まれていません「」と「..」それがフォルダ内にあるにもかかわらず。これは、Unix、Windowsでのみ使用することをサポートしています。 61である ため、I でレンジ(LEN(file_names)): 62は、 IF self.IsBdcCsvFile(file_names [I])== TRUE: 63である プリント(file_names [I]) 64 65 DEF 実行(自己): 66 self.FindBDCCsvFile(「D :\ ERD広東検査ログ」) 67 のための I中範囲(0、LEN(self.Bdc_Csv_list)): 68 #self.open_excel(self.Bdc_Csv_list [i])と 69 #プリント(self.Bdc_Csv_list [I]) 70 self.Find_Excel(self.Bdc_Csv_list [i])と 71 戻りself.Bdc_Csv_listが 72 #のプリント(self.Bdc_Csv_Dir_list [I]) 73 74 ''」 75 #打开エクセル文件 76 デフopen_excel(自己、file_csv): 77 試み: 78件の データ= xlrd.open_workbook(file_csv) 79の リターンデータ 80 例外IOError除い: 81 プリント( "ファイルAPOS名を確認") 82の 83 #取得したデータパラメータのExcelテーブル名によって:ファイル:エクセルファイルパスcolnameindex:カラムヘッダ名インデックス列、by_name:シート1タイトル 84 DEFのexcel_table_byname(FILE =「例.xlsx 'colnameindex = 0、= u'Sheet1 by_name'): 85 データ= open_excel(ファイル)が開いているファイル番号をエクセル 86 表data.sheet_by_name =(by_name)#を得たシート名に係るシートをエクセル 87 NROWS =表.nrows#行は 88 COLNAMESの=のtable.row_values(colnameindex)データ線# 89 リスト= []配列番号の読み取り結果手段 90 #の各ライン横断:範囲でROWNUMのための(0、NROWS) 91である 行を=行番号の取得に応じtable.row_values(ROWNUM)#ライン 92 もし行:行が存在する場合は# 93 アプリ= []#線コンテンツ 94 の範囲内のiについて(LEN(COLNAMES)):カラム読み出し線コンテンツ# 95 app.append(行[I]) 96 リスト。追加(APP)#負荷データ 97 #Print(リスト) 98 リターンリスト 99 '' ' 100 101 102 #' ubp_bdc01_info.csv '