python和windows文件系统:检查zip存档中是否存在文件名
在windows下使用Python2.x,本地驱动器上的文件(非UNC) ziplib似乎将文件名存储在zip归档文件中,剥离驱动器号并转换路径分隔符: C:\msala\test.txt-->msala/test.txt 问题:python和windows文件系统:检查zip存档中是否存在文件名,python,windows,zip,zipfile,Python,Windows,Zip,Zipfile,在windows下使用Python2.x,本地驱动器上的文件(非UNC) ziplib似乎将文件名存储在zip归档文件中,剥离驱动器号并转换路径分隔符: C:\msala\test.txt-->msala/test.txt 问题: 这种行为是符合zip文件格式的规范,还是仅仅是ziplib的警告 如何检查给定文件名是否在存档中 我宁愿避免这种丑陋的黑客行为: if sys.platform == "win32" : if filename[1:3] == ":\\" :
if sys.platform == "win32" :
if filename[1:3] == ":\\" :
filename = filename[3:]
filename = filename.replace(os.sep, '/')
if filename in zfh.namelist() :
我想这是不是很不符合Python的(包括电池?!)来管理这个…问题1:从4.4.17()
所有的斜杠
必须是正斜杠“/”而不是
向后斜杠“\”与Amiga兼容
和UNIX文件系统等
问题2:有很多方法可以做到这一点,例如
zip_filename = os.path.splitdrive(filename)[1].replace('\\', '/')
(在windows上的windows路径和linux上的linux路径上应该同样有效)。mmh您是否找到有关驱动器号剥离的任何信息?请参阅更新的答案。注意:它不适用于linux上的windows路径,即
os.path.splitdrive(r'c:\users\bjorn')
在linux(和wsl)上返回(''c:\\users\\bjorn')
。您可能也应该注意Eren的回答: