[OSError在Linux上使用Python zipfile提取时无效的参数

问题描述 投票:1回答:1

我想将.zip存档中的文件提取到另一个目录。首先,我创建一个ZipFile对象

  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文件的方法的任何信息或控件。

python python-3.x zipfile 7zip
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.