【问题标题】:How can I extract all .zip extension in a folder without retaining directory using python?如何在不使用 python 保留目录的情况下提取文件夹中的所有 .zip 扩展名?
【发布时间】:2018-09-25 03:12:14
【问题描述】:

这是我的代码,我不知道如何循环文件夹中的每个 .zip,请帮助我:我希望将 5 个 zip 文件的所有内容提取到一个文件夹中,不包括其目录名

import os
import shutil
import zipfile
my_dir = r"C:\\Users\\Guest\\Desktop\\OJT\\scanner\\samples_raw"

my_zip = r"C:\\Users\\Guest\\Desktop\\OJT\\samples\\001-100.zip"
with zipfile.ZipFile(my_zip) as zip_file:
zip_file.setpassword(b"virus")
for member in zip_file.namelist():
    filename = os.path.basename(member)
    # skip directories
    if not filename:
        continue

    # copy file (taken from zipfile's extract)
    source = zip_file.open(member)
    target = file(os.path.join(my_dir, filename), "wb")
    with source, target:
        shutil.copyfileobj(source, target)

【问题讨论】:

    标签: python extract


    【解决方案1】:

    重复问题,请参考以下链接。

    How to extract zip file recursively in Pythonn

    【讨论】:

      【解决方案2】:

      您正在寻找的是glob。可以这样使用:

      #<snip>
      import glob
      
      #assuming all your zip files are in the directory below.
      for my_zip in glob.glob(r"C:\\Users\\Guest\\Desktop\\OJT\\samples\\*.zip"):
          with zipfile.ZipFile(my_zip) as zip_file:
              zip_file.setpassword(b"virus")
              for member in zip_file.namelist():
                  #<snip> rest of your code here.
      

      【讨论】:

      • 等一下,它将 6 个文件夹提取到 6 个文件中,而不是 zip 文件的内容
      • 这给了我 6 个提取的文件,我不知道为什么,而不是 6 个文件夹的内容
      • 如果你有多个文件夹,你可以试试glob.glob(r"C:\\Users\\Guest\\Desktop\\OJT\\scanner\\samples_raw\\**\\*.zip"。这将扫描 samples_raw zip 文件中的目录。
      • 不,我的意思是将 6 个 zip 文件提取到 .file 中,但未提取 zip 文件的内容
      猜你喜欢
      • 2012-08-18
      • 2010-12-27
      • 1970-01-01
      • 2020-01-07
      • 1970-01-01
      • 1970-01-01
      • 2016-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多