解凍アーカイブ_再帰アップデートモジュール(ダウンロードする解凍の必要性に対応します)

。1  !は/ usr / binに/のpython3する
2  - *を-コーディング:UTF-8 - * - 
。3  インポートOS
 。4  インポートshutil
 。5  インポート時間
 。6  インポートSYS
 。7  インポートサブプロセス
 。8は、sys.setrecursionlimit(10000) 最大再帰関数を設定します。深さ、防止無限の再帰スタックオーバーフローとクラッシュを引き起こす
9  
10  クラス:UnzipLogFile
 11      parentName = " D:\ ERD広東検査ログ" 
12      DEFの __init__ (自己ファイルパス):
 13          self.parentName = filePathに
 14     DEF Iszip(セルフ、ファイル): ここでは、カスタム関数は、ファイルの種類が圧縮されていないと判断パケットタイプ
15          湿布= [ " .tar.gzを"" .tar.bz2と"" .tar.bz "" の.tar .tgz " " の.tar " " の.tgz " " .zipファイル" " .RAR " " .7z ]
 16          用の Z 圧縮:
 17              IFファイル。endswith(Z): 説明:文字列が指定された文字またはストリングを終了するかどうかを決定
18で                 戻りZを
 19。 
20      #はBDCログファイルか否かを判断
21である     DEF IsMrsLogFile(自己ファイル名):
 22れる          [DIRNAME、ファイル名] = os.path.split(ファイル名)
 23          mrsFiles SET =((" ubp_bdc01_20 "" ubp.info.20 " ))
 24          のための namefile mrsFiles:
 25              IF namefile ファイル名:
 26                  リターン真の
 27              28                  続行
29         戻り30  
31である     圧縮ファイルを圧縮解除操作
32      DEF 解凍(セルフは、SRCFILEは、FOLDER_NAME、dstDir):
 33である         (FOLDER_NAME)os.chdir
 34は         IF self.IsMrsLogFile(SRCFILE)== FALSE:
 35              リターン
36          オーダー= " \ "C:\\プログラムファイル\\ \\ 7z.exe 7ジップ\" X \ "{0} \" -R&LT -o " + dstDir
 37          CMD = order.format(SRCFILE)
 38は、         プリント" 抽出します:" 、CMD)
 39          os.popen(CMD) は、コマンドラインコンソールプログラムを呼び出す
40         (5 time.sleep 41である         #1 shutil.move(STR(注文)、dstDir)
42は、 
43である     パス内のすべてのファイルを取得し
44である     DEF AllFile(自己ファイルパス):
 45          os.chdir(filePathに)os.chdir指定された現在の作業ディレクトリを変更するためのパス()メソッド
46である          パスos.getcwd =() os.getcwd()メソッドは、現在の作業ディレクトリを返し
47          file_names os.listdir =(./ os.listdirをこの方法は、指定したフォルダにフォルダが含まれて返す()ファイルまたはファイルの名前をリストアップ。このリストは、アルファベット順にあります。それは「」含まれていません。また、「..」は同じフォルダにある場合でも。これは、Unix、Windowsでのみ使用することをサポートしています。
48          のための名前file_names:
 49             パス= + name_path " \\ " +名必要な
50              IF os.path.isfile(name_path):ファイルパスかどうかを判断
51である                 IF self.Iszip(名)" .tar.gzの"" .tar.bz2と" " .tar.bz " " .tar.tgz " " の.tar " " の.tgz " " .zipファイル" " .rarを".7z :)
 52は                      FILEDIR = os.path.splitext(名)[0] 組分割経路、リターンパス名およびファイル拡張子
53は                     IF:os.path.exists(FILEDIR)パス経路が存在する場合、リターンパスが存在しない場合はtrue ;.経路は、返し偽
54は                          shutil.rmtree(FILEDIR) は、再帰的にディレクトリおよびディレクトリ内のすべての内容を削除し
55                      SRCFILEを= STR(パス)+ " \\ " + STR(名)
 56である                      dstDir STR = (パス)+ " \\ " + STR(FILEDIR)
 57である                     のIF self.IsMrsLogFile(SRCFILE)== FALSE:
 58                         続けて
59                      印刷" ディレクトリの作成:" + FILEDIR)を
 60                      os.mkdir(FILEDIR)
 61がある                     self.Unzip(SRCFILE、パス、dstDir)
 62がされて                     self.AllFile(dstDir)
 63がある             のelif os.path.isdir(name_path): 分析フォルダのパスかどうかを
64                  self.AllFile(パス+ " \\ " + 名)
 65              os.chdir(filePathに)
 66              パス= os.getcwd()
 67  
68      DEF ファイル名を指定して実行(セルフ):
 69         self.AllFile(" D:\ ERD広東検査ログ" 70  
71であり、 
72  '' ' 
73れる UnzipLogFile = RUN( "D:\検査ログ保存パス")
 74  run.Run();
 75  ' ''

 

おすすめ

転載: www.cnblogs.com/dog-and-cat/p/11613808.html