我无法解压缩my_file.zip。它找到了正确的来源和目标。 它能够在my_file.zip中读取和打印文件组件。但是当它到达以下行时:
file(os.path.join(my_dir, filename), "wb")
它会抛出错误:
TypeError: 'str' object is not callable
my_zip
是动态列表的一个组成部分。
奇怪的是,当我在测试脚本中对相同的列表组件进行硬编码并运行相同的代码行时,它可以完美地运行。
my_dir = r"D:\Download"
my_zip = r"D:\Download\my_file.zip"
with zipfile.ZipFile(my_zip) as zip_file:
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)
请帮助。感谢
答案 0 :(得分:1)
使用python 2.7,使用以下方法打开文件:
with open(filename, 'w'):
#process
而不是使用file
类。
您的错误似乎是您在代码路径的前面为名称file
分配了一个字符串。
我强烈建议您在代码中搜索模式file =
,然后为该变量选择其他名称。覆盖内置名称是非常糟糕的做法(你会看到一个例子)。
快速且(非常)肮脏的解决方法是在代码块的开头添加语句del file
。它将使您再次访问基础file
类。我不建议这样做(但突出显示它,因为它是对python内部工作的有趣见解)。修复代码要好得多。