是否有比python中更好的方法来处理跨平台斜线?

时间:2019-04-27 09:03:06

标签: python python-3.x path filepath

有问题。以下是我必须处理跨平台路径时使用的代码。有没有比这更好的方法了?

import platform

my_os = platform.system()
if my_os == "Windows":
    slash = "\\"
else:
    slash = "/"

代码中的随机示例:

source_path = ""
for part in __file__.split("/")[:-1]:
    source_path += (part + slash)

print(source_path)

2 个答案:

答案 0 :(得分:5)

函数os.path.join。有关更多信息,请参阅文档:https://docs.python.org/3/library/os.path.html#os.path.join

答案 1 :(得分:4)

不要自己加入路径。标准库带有os.pathpathlib模块,它们抽象了(大多数)平台差异。

例如,获取当前模块目录为:

error: no match for ‘operator>’ (operand types are ‘Z2’ and ‘int’)
if (a==Z2::Plus || a>0){
~^~

import os.path

source_path = os.path.dirname(os.path.abspath(__file__))

两者都为您提供了当前平台的适当绝对路径。

还有os.sep value,这是当前平台的主目录分隔符,而对于os.altsep,例如Windows,可以使用多个路径分隔符的平台。

可以使用标准库版本来处理特定于平台的边缘情况,例如Windows上的混合正斜杠和反斜杠,驱动器名称和UNC路径。