2017-01-31 14 views
-1

私はPythonには新しく、Zipファイルからそれぞれ異なる拡張子を持つ3つの単一ファイルを抽出したかったのです。私はそのファイル名を知りません。圧縮ファイルから選択した拡張子のすべてのファイルを抽出する

のは、次の形式が存在していることを言ってみましょう:

---ZippedDirectory.zip

|_ 
    RandomnameFile1.KnownFormat1 
|_ 
    RandomnameFile2.KnownFormat2 
|_ 
    RandomnameFile3.KnownFormat3 
|... 

私は上記のファイルを抽出する必要があり、私は唯一の形式を知っています。このzip形式のアーカイブには他のファイルが存在する可能性があります。 私はこれを達成する方法について混乱しています、どんな助けも素晴らしいでしょう!

ありがとうございます!

+3

https://pymotw.com/2/zipfile([こちら]いくつかの例で、[zipファイル](https://docs.python.org/2/library/zipfile.html)ライブラリを参照してください。 /) – nbryans

+1

zipfileの片方向は、 'namelist()'から返されたファイルをフィルタリングし、 'extractall()'でそのリストを使用することです。 – tdelaney

答えて

2

あなたはこの

import zipfile 


def main(): 
    archive = 'archive.zip' 
    directory = './' 
    extensions = ('.txt', '.pdf') 
    zip_file = zipfile.ZipFile(archive, 'r') 
    [zip_file.extract(file, directory) for file in zip_file.namelist() if file.endswith(extensions)] 
    zip_file.close() 


if __name__ == '__main__': 
    main() 
1

私のような何かを行うことができるはずはジョーンズの簡単なバージョンです。 1つの拡張だけで動作します。

from zipfile import ZipFile 

with ZipFile(r'C:\scratch\folder to process\try.zip') as theZip: 
    fileNames = theZip.namelist() 
    for fileName in fileNames: 
     if fileName.endswith('py'): 
      content = theZip.open(fileName).read() 
      open(fileName, 'wb').write(content) 
関連する問題