【发布时间】:2015-07-24 00:08:15
【问题描述】:
在 Python tarfile.TarFile 对象中使用的路径分隔符是“/”而不考虑平台,还是 Windows 上的反斜杠?
我基本上从不接触 Windows,但如果可以的话,我希望我编写的代码能够与它兼容。不幸的是,我没有要测试的 Windows 主机。
【问题讨论】:
在 Python tarfile.TarFile 对象中使用的路径分隔符是“/”而不考虑平台,还是 Windows 上的反斜杠?
我基本上从不接触 Windows,但如果可以的话,我希望我编写的代码能够与它兼容。不幸的是,我没有要测试的 Windows 主机。
【问题讨论】:
快速测试告诉我始终使用(正向)斜杠。
事实上,tar 格式将每个文件的完整路径存储为单个字符串,使用斜杠(尝试查看十六进制转储),python 只是读取该完整路径而无需任何修改。同样,在提取时,python 用本地分隔符硬替换斜杠(请参阅TarFile._extract_member)。
...这让我觉得肯定有一些不符合 Windows 的 tar 实现会创建带有反斜杠作为分隔符的 tar 文件!?
【讨论】:
tarfile使用反斜杠.afaik你必须像tarinfo = tarfile.TarInfo(os.path.join(...).replace('\\', '/'))一样做某事