我想编写一个简单的脚本来遍历文件夹中的所有文件,并将压缩文件(.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)
我正在使用Python2.7.5解释器。我查看了zipfile模块(https://docs.python.org/2/library/zipfile.html#module-zipfile)的文档,想知道我做错了什么。
我想在我看来,这个过程应该是这样的:
不过,谢谢马库斯,在执行建议时,我又出现了一个错误:
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]]])
Open a ZIP file, where file can be either a path to a file (a string) or a file-like object
在我看来,一切都是存在和解释的。我只是不明白我做错了什么。
有什么建议吗?
谢谢你
为了扩展这个想法,在一个目录中的所有子目录中解压所有扩展名为.zip的文件,下面的代码似乎工作得很好:
您需要用文件名构造一个
ZipFile
对象,然后提取它:是错误的。
将从zip文件中提取名称包含在
item
中的所有文件。我认为您应该更仔细地阅读文档以
zipfile
:)但是您走的是正确的道路!下面是对我有用的代码:
回顾我修改过的代码,目录与脚本的目录混淆了。
在不破坏工作目录的情况下,下面的代码也可以工作。首先删除行
然后将文件名指定为
相关问题 更多 >
编程相关推荐