我想将.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
文件的方法的任何信息或控件。
Linux仅将'/'
识别为路径分隔符,但是您可以设置os.altsep = '\\'
应该起作用。