我想将.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
文件摆在首位。
2条答案
按热度按时间qxgroojn1#
Linux只将
'/'
识别为路径分隔符,但是您可以设置os.altsep = '\\'
,这样应该可以工作。vnzz0bqm2#
错误22也可能适用于损坏的原始zip文件。请确保“filename.zip“文件是有效的zip文件。