Python ZipFile 路径分隔符

Posted

技术标签:

【中文标题】Python ZipFile 路径分隔符【英文标题】:Python ZipFile path separators 【发布时间】:2011-11-18 02:09:36 【问题描述】:

如果我使用 Python ZipFile 库解压缩 Zip 文件,该文件是在 Windows 上创建的,但我的代码在类 Unix 上运行,路径分隔符是否总是 Unix 样式?

【问题讨论】:

似乎必须如此,因为它没有存储为字符串。我当然希望如此:) 你希望如此!但是当你与电脑打交道时,希望与任何事情都无关...... 【参考方案1】:

在内部,ZipFile 根据zip file specification 的要求存储正斜杠。

在外部,它们使用os.sep 进行翻译,因此它将与给定平台上通常预期的内容相匹配。

代码参考:

http://hg.python.org/cpython/file/2.7/Lib/zipfile.py#l295 http://hg.python.org/cpython/file/2.7/Lib/zipfile.py#l1046

【讨论】:

谢谢!我认为这是真的,但最好有证据。 请注意,这种转换仅适用于在 ZIP 存档中创建条目时。访问现有成员时(例如使用zip_file.read('dir/file.txt'))必须始终使用斜杠。 +1 用于指向 zip 文件规范的链接。谢谢!!!以下是相关部分: 4.4.17 文件名:(变量) 4.4.17.1 文件名,带有可选的相对路径。存储的路径不得包含驱动器或设备号,或前导斜杠。所有斜杠必须是正斜杠“/”而不是反斜杠“\”,以便与 Amiga 和 UNIX 文件系统等兼容。如果输入来自标准输入,则没有文件名字段。

以上是关于Python ZipFile 路径分隔符的主要内容,如果未能解决你的问题,请参考以下文章

解决python中join路径分隔符跨平台移植性

python写绝对路径时可能因为路径分隔符的原因导致在不同系统上无法通用,怎么能实现通用的?

python找不到指定的路径怎么办

[Python 3系列]读写文件

Python之os.path路径模块中的操作方法总结

Python | os.path.join() method