OSError在Linux上使用Python zipfile进行提取时参数无效

6rvt4ljy  于 2023-01-22  发布在  Python
关注(0)|答案(2)|浏览(146)

我想将.zip存档中的一个文件解压缩到另一个目录。

zfile = '/home/.../filename.zip'
  archive = zipfile.ZipFile(zfile, 'r')

三点...表示我只是隐藏了完整的路径,而不是真实的的路径。
然后,我从归档文件中将特定成员解压缩到另一个目录

print(archive.namelist()[0])    
  # returns sub\\xxx.data where the two back slashes is not a typo!
  path = '/home/.../datadir'
  archive.extract(member='sub\\xxx.data', path=path)

然后出现系统错误

OSError: [Errno 22] Invalid argument: '/home/.../datadir/sub\\xxx.data'

如果手动将两个反斜杠\\更改为一个正斜杠/,则会得到不同的错误

archive.extract(member='sub/xxx.data', path=path)

  KeyError: "There is no item named 'sub/xxx.data' in the archive"

因此Linux系统无法将带有两个反斜杠的路径识别为有效的Linux路径,并且无法手动更改该路径,因为这样根本无法识别.zip存档中的文件。

我在使用7-Zip时遇到同样的问题

不幸的是,我没有任何信息或控制有关的方法用于创建.zip文件摆在首位。

qxgroojn

qxgroojn1#

Linux只将'/'识别为路径分隔符,但是您可以设置os.altsep = '\\',这样应该可以工作。

vnzz0bqm

vnzz0bqm2#

错误22也可能适用于损坏的原始zip文件。请确保“filename.zip“文件是有效的zip文件。

相关问题