2016-11-09 14 views
-2

ZIPファイルがあり、ファイル名に "test"という文字列を含むすべてのファイル(通常は1つ)を抽出する必要があります。それらはすべてxlsxファイルです。Python zipfileを使用してZIPファイル名に特定の文字列を含むファイルを抽出します。

私はそのためにPython zipfileを使用しています。これは動作しません。私のコードです:

zip.extract(r'*\test.*\.xlsx$', './') 

エラー私が取得:

KeyError: "There is no item named '*\\\\test.*\\\\.xlsx$' in the archive" 

任意のアイデア?

答えて

2

あなたはここに複数の問題があります。

  • rは、単にあなたはそれが正規表現オブジェクトを作成すると思うかもしれないように見える、生の文字列として文字列を扱う意味します。それはあなたが手動でzipファイルのインデックスを反復処理し、反対ファイル名と一致する必要が

に一致するようにする前に

  • 正規表現の開始時*数量詞には文字を持たない(どのような場合には、zip.extract()は文字列のみを受け入れます)あなたの正規表現:

    from zipfile import ZipFile 
    import re 
    zip = ZipFile('myzipfile.zip') 
    for info in zip.infolist(): 
        if re.match(r'.*test.*\.xlsx$', info.filename): 
         print info.filename 
         zip.extract(info) 
    

    あなたはまた、構文をシェルグロブファイルを使用して検討するかもしれない:fnmatchcase(info.filename, '*.test.*.xls')(舞台裏それが正規表現に変換しますが、それはあなたのコードが少し簡単になります)

  • 関連する問題