使用Python 2.7.5将文件夹中的所有压缩文件解压缩到同一文件夹

tpdance:

我想编写一个简单的脚本来遍历文件夹中的所有文件,然后将压缩(.zip)的文件解压缩到同一文件夹。对于这个项目,我有一个包含将近100个压缩的.las文件的文件夹,我希望找到一种简单的方法来批量解压缩它们。我尝试了以下脚本

import os, zipfile

folder = 'D:/GISData/LiDAR/SomeFolder'
extension = ".zip"

for item in os.listdir(folder):
    if item.endswith(extension):
        zipfile.ZipFile.extract(item)

但是,当我运行脚本时,出现以下错误:

Traceback (most recent call last):
  File "D:/GISData/Tools/MO_Tools/BatchUnzip.py", line 10, in <module>
    extract = zipfile.ZipFile.extract(item)
TypeError: unbound method extract() must be called with ZipFile instance as first argument (got str instance instead)

我正在使用python 2.7.5解释器。我查看了zipfile模块的文档(https://docs.python.org/2/library/zipfile.html#module-zipfile),我想了解我做错了什么。

我想我的过程将是这样的:

  1. 获取文件夹名称
  2. 循环浏览文件夹并找到zip文件
  3. 将zip文件提取到文件夹

但是,感谢马库斯(Marcus),在实施建议时,出现了另一个错误:

Traceback (most recent call last):
  File "D:/GISData/Tools/MO_Tools/BatchUnzip.py", line 12, in <module>
    zipfile.ZipFile(item).extract()
  File "C:\Python27\ArcGIS10.2\lib\zipfile.py", line 752, in __init__
    self.fp = open(file, modeDict[mode])
IOError: [Errno 2] No such file or directory: 'JeffCity_0752.las.zip'

当我使用打印语句时,我可以看到文件在其中。例如:

for item in os.listdir(folder):
    if item.endswith(extension):
        print os.path.abspath(item)
        filename = os.path.basename(item)
        print filename

产量:

D:\GISData\Tools\MO_Tools\JeffCity_0752.las.zip
JeffCity_0752.las.zip
D:\GISData\Tools\MO_Tools\JeffCity_0753.las.zip
JeffCity_0753.las.zip

据我了解的文档,

zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])

打开一个ZIP文件,其中file可以是文件的路径(字符串)或类似文件的对象

在我看来,一切都存在并得到解释。我只是不明白我在做什么错。

有什么建议?

谢谢

tpdance:

以下是对我有用的代码:

import os, zipfile

dir_name = 'C:\\SomeDirectory'
extension = ".zip"

os.chdir(dir_name) # change directory from working dir to dir with files

for item in os.listdir(dir_name): # loop through items in dir
    if item.endswith(extension): # check for ".zip" extension
        file_name = os.path.abspath(item) # get full path of files
        zip_ref = zipfile.ZipFile(file_name) # create zipfile object
        zip_ref.extractall(dir_name) # extract file to dir
        zip_ref.close() # close file
        os.remove(file_name) # delete zipped file

回顾我修改的代码,该目录与脚本目录混淆了。

在不破坏工作目录的情况下,以下内容也适用。首先删除线

os.chdir(dir_name) # change directory from working dir to dir with files

然后将file_name分配为

file_name = dir_name + "/" + item

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用7-zip批量解压缩文件夹中的所有文件?

批处理如何使用 7zip 将多个 zip 文件解压缩到其原始文件夹?

如何使用Gulp解压缩同一文件夹中的多个文件

如何使用Python 3将lzma2(.xz)和zstd(.zst)文件解压缩到文件夹中?

如何使用7-zip分别压缩文件夹中的文件(每个文件)?

将所有tar.bz2文件解压缩到目录中

使用python解压缩文件夹和子文件夹中的zip文件

如何使用powershell将tar文件解压缩到特定文件夹

Java:使用子文件夹解压缩文件夹

我们如何在linux中指定unzip或7za命令将多个zip文件解压缩到一个文件夹中,同时保留所有重复文件?

GNU parallel + gunzip(或7z或bsdtar或解压缩):将每个“ archivename.zip”解压缩到(将要创建)其“ archivename”子文件夹中

有没有一种方法可以在大量文件夹上使用7zip单独压缩文件夹?

如何使用 Java 压缩和解压缩文件/文件夹

使用 TS 自动导出同一文件夹中的所有组件

如何解压缩文件夹中的所有.tgz文件并使用不同的命名约定将其写入新文件

使用Applescript压缩和解压缩文件夹

从ASP页面使用7-Zip压缩文件夹

将创建的 zip 文件夹解压缩到同一文件夹?

如何使用 os.scandir 循环同一文件夹中的所有光栅文件

如何使用powershell提取同一文件夹中子文件夹中的所有zip文件

如何使用目标解压缩依赖关系从Maven依赖关系插件中的子文件夹中仅解压缩文件?

使用7-Zip压缩和删除同一文件

使用Powershell 2压缩多个文件夹和文件

Python:将目录中的所有文件夹压缩

StreamSets:如何使用流集解压缩文件夹

如何使用符号链接解压缩文件夹

运行下载链接并解压缩到 python 中的文件夹,其中包含存储变量的 url

使用tar -xvzf解压缩会导致文件夹的大小小于压缩文件的大小

无法使用Golang删除解压缩的文件夹