无法导入Python库“zipfile”

8

感觉像个傻瓜。我想要与zip文件交互,但似乎无法使用zipfile库。我对Python还比较新手。

from zipfile import *
#set filename
fpath = '{}_{}_{}.zip'.format(strDate, day, week)

#use zipfile to get info about ftp file
zip = zipfile.Zipfile(fpath, mode='r')
# doesn't matter if I use     
#zip = zipfile.Zipfile(fpath, mode='w')
#or zip = zipfile.Zipfile(fpath, 'wb')

我遇到了这个错误:

zip = zipfile.ZipFile(fpath, mode='r')

NameError: name 'zipfile' is not defined

如果我只使用import zipfile,那么会出现这个错误:

TypeError:'module'对象不可调用


使用 from zipfile import * 时,必须省略前缀并使用 ZipFile。至于另一个错误,我认为可能有拼写错误,应该可以解决(你的文件名是 zipfile.py 吗?那可不是个好主意)。 - Jean-François Fabre
如果我不使用前缀,会出现以下错误:NameError: name 'zipfile' is not defined。 - REdim.Learning
2个回答

9
两种解决方法:
1)使用from,在这种情况下删除zipfile命名空间:
from zipfile import *
#set filename
fpath = '{}_{}_{}.zip'.format(strDate, day, week)

#use zipfile to get info about ftp file
zip = ZipFile(fpath, mode='r')

2) 使用直接的import,在这种情况下使用完整路径,就像你所做的那样:

import zipfile
#set filename
fpath = '{}_{}_{}.zip'.format(strDate, day, week)

#use zipfile to get info about ftp file
zip = zipfile.ZipFile(fpath, mode='r')

你的代码中有一个隐蔽的错别字: Zipfile 应该是 ZipFile (大写的 F),所以我为回答这个问题感到有点不好意思...

所以我们要从中吸取教训:

  • 避免使用 from x import y,因为编辑器更难自动完成单词
  • 使用正确的 import zipfile 和一个提供自动完成功能的编辑器,你就不会遇到这个问题了。

3

使用Python压缩文件的最简单方法:

import zipfile

zf = zipfile.ZipFile("targetZipFileName.zip",'w', compression=zipfile.ZIP_DEFLATED)
zf.write("FileTobeZipped.txt")
zf.close()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接