代码是:
import sys
execfile('test.py')
在test.py中我有:
import zipfile
with zipfile.ZipFile('test.jar', 'r') as z:
z.extractall("C:\testfolder")
此代码生成:
AttributeError ( ZipFile instance has no attribute '__exit__' ) # edited
来自" test.py"的代码从python空闲运行时工作。 我正在运行python v2.7.10
答案 0 :(得分:6)
你好,也许迟到但我只是为我解决了这个错误:)。
我在python 2.7上创建代码但是当我把它放在使用2.6的服务器上时我有这个错误:
AttributeError: ZipFile instance has no attribute '__exit__'
为了解决这个问题,我在这篇文章中使用了塞巴斯蒂安的答案: Making Python 2.7 code run with Python 2.6
import contextlib
def unzip(source, target):
with contextlib.closing(zipfile.ZipFile(source , "r")) as z:
z.extractall(target)
print "Extracted : " + source + " to: " + target
像他说的那样:
contextlib.closing完全执行缺少的退出方法 ZipFile应该这样做。即,调用close方法
亲切的问候,(对不起我的英语)
答案 1 :(得分:0)
根据Python文档,在版本2.6中添加了ZipFile.extractall()
。我希望你会发现你运行的是一个不同于旧版本(2.6之前版本)的Python版本,而不是空闲版本。你可以找到这个版本:
import sys
print sys.version
可以使用
获取正在运行的解释器的位置print sys.executable
您的问题的标题支持旧版Python的执行可能性,因为with
语句/上下文管理器(具有__exit__()
方法的类)直到2.6(2.5)才引入如果明确启用)。