Python 我怎样才能避免:“我怎么能避免?”;ZipFile实例没有属性'__退出''&引用;提取zip文件时?
代码是:Python 我怎样才能避免:“我怎么能避免?”;ZipFile实例没有属性'__退出''&引用;提取zip文件时?,python,zipfile,execfile,Python,Zipfile,Execfile,代码是: 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空闲时运
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文档,我正在运行python v2.7.10,它是在2.6版中添加的。我希望您会发现,您运行的Python版本与idle使用的版本不同,更旧(2.6之前)。您可以通过以下内容了解哪个版本:
import sys
print sys.version
并且运行的解释器的位置可以通过
print sys.executable
您问题的标题支持旧版本Python被执行的可能性,因为带有语句/上下文管理器的
(带有\uuuuuuu exit\uuuu()
方法的类)直到2.6才被引入(如果显式启用,则为2.5).我在python 2.7上编写了代码,但当我将其放在使用2.6的服务器上时,出现了以下错误:
AttributeError:ZipFile实例没有属性“\uuuu exit\uuuu”
为了解决这个问题,我在这篇文章中使用了塞巴斯蒂安的答案:
正如他所说:
contextlib.closing与缺少的exit方法完全相同
拉链应该可以。即,调用close方法
标题是\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
,问题中的错误是extractall
,哪一个是相关的?如果您试图直接执行test.py
,是否会发生同样的情况?此外,您还应该添加第二个反斜杠或使用r“C:\testfolder”
来避免\t
成为制表符。只需在Python 3.4.1中尝试了这一点,并且没有出现奇怪的错误。显然,使用不同的.zip文件。如果不是Python版本问题,可能是zip文件损坏的问题吗?(使用命令行中的zip-T文件
进行检查)很抱歉出现复制粘贴错误。错误显示为“”。。。no attribute exit“import sys print sys.version;返回:2.7.10(默认值,2015年5月23日09:44:00)[MSC v.1500 64位(AMD64)]@Martin Evans;否。从空闲运行时,我没有遇到任何问题,因此在@nigel222提取存档文件。我尝试使用不同的zip文件时,都返回相同的问题[解释器:]与python 2.7.10一起提供的标准Idle。[sys.executable]在空闲输出中:C:\Python27\pythonw.exe;outdside Idle返回:无
import contextlib
def unzip(source, target):
with contextlib.closing(zipfile.ZipFile(source , "r")) as z:
z.extractall(target)
print "Extracted : " + source + " to: " + target