python和Windows文件系统:检查文件名是否存在zip存档中

时间:2018-10-24 07:46:28

标签: python windows zip zipfile

在Windows下使用python 2.x在本地驱动器(不是UNC)上运行文件。

似乎ziplib将文件名存储在zip归档文件中,以剥离驱动器号并转换路径分隔符:

  

C:\ msala \ test.txt-> msala / test.txt

问题:

  1. 此行为符合zip文件格式的规范,还是只是ziplib的警告?

  2. 如何检查存档中是否有给定的文件名?

我宁愿避免这种丑陋的攻击:

if sys.platform == "win32" :
    if filename[1:3] == ":\\" :
        filename = filename[3:]
    filename = filename.replace(os.sep, '/')

if filename in zfh.namelist() :

恕我直言,必须对此进行管理非常不合常规(包括电池?!)。

1 个答案:

答案 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路径上应同样有效。)