web-dev-qa-db-ja.com

Python zipfile.extract()はすべてのファイルを抽出しません

ここにあるコードを使用して、zipフォルダーを抽出しようとしています。

def unzip(source_filename, dest_dir):
with zipfile.ZipFile(source_filename) as zf:

    for member in zf.infolist():
        words = member.filename.split('/')
        path = dest_dir
        for Word in words[:-1]:
            drive, Word = os.path.splitdrive(Word)
            head, Word = os.path.split(Word)
            if Word in (os.curdir, os.pardir, ''): continue
            path = os.path.join(path, Word)
        zf.extract(member, path)

しかし、たとえば、ディレクトリ構造を持つwordpress.Zipを抽出しようとすると
wordpress /
-wp-content /
--- somefile.php
-wp-config.php
-index.php
ルートフォルダーまたはwordpress /の下のフォルダーにあるファイルのみを取得します。だから私はwordpress/wp-content/somefile.phpを取得しますが、wordpress /フォルダー自体のファイルは取得しません。

最初に調べる場所は ドキュメント です。

ZipFile.extractall([path[, members[, pwd]]])

それをあなたの状況に適用して、私は試してみます:

def unzip(source_filename, dest_dir):
    with zipfile.ZipFile(source_filename) as zf:
        zf.extractall(dest_dir)
21
Robᵩ

以下で定義されているunzipが必要です。

def unzip(source_filename, dest_dir):
    with zipfile.ZipFile(source_filename) as zf:
        zf.extractall(dest_dir)
1
Eric Silveira