gpt4 book ai didi

Python path.join 在 Mac 和 Windows 中运行时的行为不同

转载 作者:太空宇宙 更新时间:2023-11-04 10:44:51 27 4
gpt4 key购买 nike

我希望我的项目在 PYTHON 中内置,以在任何终端(MAC、CYGWIN、Windows 等)中支持 Windows Linux MAC。我可以实现,但是当我运行以下命令时我遇到了一些问题

import os
mypath = os.path.join('users','scripts', 'pythonsample')
print mypath

在windows命令提示符下输出是

users\scripts\pythonsample

在MAC终端输出是

users/scripts/pythonsample

另外,当我运行下面的代码时

import glob
glob.glob(os.path.join('users','scripts', 'pythonsample','*.*'))

在windows命令提示符下输出是

[users/scripts\\pythonsample\\a1.py,
users/scripts\\pythonsample\\a2.py,
users/scripts\\pythonsample\\a3.py
users/scripts\\pythonsample\\a4.py]

在MAC终端输出是

[users/scripts/pythonsample/a1.py,
users/scripts/pythonsample/a2.py,
users/scripts/pythonsample/a3.py
users/scripts/pythonsample/a4.py]

因此在多个平台上解析并获取没有完整路径的文件名变得困难。

我可以写一个 if else block 来决定脚本是在 Windows 还是 MAC 或 CGYWIN 中运行。

import sys
#Output of below command is Win32, linux2, darwin, cgywin
print(sys.platform)

但是有没有一种简单的方法可以不用 out if else block 来完成这个?

最佳答案

这正是您应该期待的。在 Windows 上,os.path 为您提供 Windows 风格的路径;在 Mac OS X 上,它为您提供 POSIX 风格的路径。

如果您希望保证所有内容都是 POSIX 路径,则根本不要使用 os.path,而是使用 posixpath

另一方面,如果您的路径即使在 Windows 上也可能是 POSIX 格式(因为 Windows 的大部分部分处理 POSIX 样式的路径,并且许多工具生成 POSIX 样式的路径)并且想要保证您有本地路径,调用 os.path.normpath .

关于Python path.join 在 Mac 和 Windows 中运行时的行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18138563/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com