Python Zipfile-无效参数Errno 22

Python Zipfile-无效参数Errno 22,python,zipfile,Python,Zipfile,我有一个.zip文件,想知道其中文件的名称。代码如下: zip_path = glob.glob(path + '/*.zip')[0] file = open(zip_path, 'r') # opens without error if zipfile.is_zipfile(file): print str(file) # prints to console my_zipfile = zipfile.ZipFile(zip_path) # throws IOError 以下是回溯

我有一个.zip文件,想知道其中文件的名称。代码如下:

zip_path = glob.glob(path + '/*.zip')[0] 
file = open(zip_path, 'r') # opens without error
if zipfile.is_zipfile(file):
    print str(file) # prints to console
my_zipfile = zipfile.ZipFile(zip_path) # throws IOError
以下是回溯:

<open file u'/Users/me/Documents/project/uploads/assets/peter/offline_message/offline_imgs.zip', mode 'r' at 0x107b2a150>
Traceback (most recent call last):
  File "/Users/me/Documents/project/admin_dev/proj_name/views.py", line 1680, in get_dps_app_builder_assets
    link_to_assets_zip = zip_dps_app_builder_assets(server_url, app_slug, button_slugs)
  File "/Users/me/Documents/project/admin_dev/proj_name/views.py", line 1724, in zip_dps_app_builder_assets
    my_zipfile = zipfile.ZipFile(zip_path)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/zipfile.py", line 712, in __init__
    self._GetContents()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/zipfile.py", line 746, in _GetContents
    self._RealGetContents()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/zipfile.py", line 779, in _RealGetContents
    fp.seek(self.start_dir, 0)
IOError: [Errno 22] Invalid argument

回溯(最近一次呼叫最后一次):
文件“/Users/me/Documents/project/admin\u dev/proj\u name/views.py”,第1680行,在get\u dps\u app\u builder\u资产中
链接到资源(服务器url、应用程序段塞、按钮段塞)
文件“/Users/me/Documents/project/admin\u dev/proj\u name/views.py”,第1724行,在zip\u dps\u app\u builder\u资产中
my_zipfile=zipfile.zipfile(zip_路径)
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/zipfile.py”,第712行,在__
self.\u GetContents()
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/zipfile.py”,第746行,在_GetContents中
self.\u RealGetContents()
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/zipfile.py”,第779行,在_RealGetContents中
fp.seek(self.start\u dir,0)
IOError:[Errno 22]参数无效
我很困惑为什么会发生这种情况,因为文件显然在那里,并且是一个有效的.zip文件。文档中明确指出,您可以将路径传递给文件或类似文件的对象,在我的情况下,这两种方式都不起作用:


我没能弄清楚这个问题,结果以完全不同的方式解决了


编辑:在我使用的Django应用程序中,用户需要能够以.zip文件的形式上传资产,然后在另一个具有不同结构的zip中下载他们上传的所有内容(以及我们动态生成的其他内容)。所以,我想解压一个先前上传的文件,并将该文件的内容压缩到另一个zip中,但由于错误,我无法这样做。当用户请求下载时,我没有读取zip文件,而是从Django InMemoryUploadedFile(我能够成功读取其内容)中解压它,并将解压后的文件留在文件系统中供以后使用。zip的内容只有两个较小的图像文件,因此这种提前解压zip以便以后使用的解决方法对于我来说是可行的

文件是内置的。尽量不要用它作为变量名。我实际上并没有用它作为变量名,我只是把它改得尽可能简单。不过,谢谢。函数的
是_zipfile()
只是检查一个神奇的数字,可能会被愚弄。在我看来,
zipfile
正在尝试查找文件开始之前的某个位置,这通常是由于一个无效的zip文件。你确定传统的zip实用程序可以使用同一个文件吗?如果你是这个意思,我可以在终端中解压并检查它的内容。你能把zipfile上传到某个地方吗?为了将来的访问者,你能详细说明你采取的不同方法吗?目前来看,这不是一个特别有用的答案。