在Windows下使用python 2.x在本地驱动器(不是UNC)上运行文件。
似乎ziplib将文件名存储在zip归档文件中,以剥离驱动器号并转换路径分隔符:
C:\ msala \ test.txt-> msala / test.txt
问题:
此行为符合zip文件格式的规范,还是只是ziplib的警告?
如何检查存档中是否有给定的文件名?
我宁愿避免这种丑陋的攻击:
if sys.platform == "win32" :
if filename[1:3] == ":\\" :
filename = filename[3:]
filename = filename.replace(os.sep, '/')
if filename in zfh.namelist() :
恕我直言,必须对此进行管理非常不合常规(包括电池?!)。
答案 0 :(得分:1)
问题1:来自4.4.17(https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT)
所有斜杠 必须正斜杠“ /”而不是 向后斜杠“ \”以与Amiga兼容 和UNIX文件系统等。
问题2:许多方法可以做到这一点,例如
zip_filename = os.path.splitdrive(filename)[1].replace('\\', '/')
(在Windows上的Windows路径和linux上的linux路径上应同样有效。)