Python 如何操作目录路径以跨多个操作系统工作?

Python 如何操作目录路径以跨多个操作系统工作?,python,python-2.6,Python,Python 2.6,我正在编写一个python脚本,它必须从输入路径内部创建输出路径。然而,我面临着创建路径的问题,无论操作系统如何,我都可以使用该路径 我曾尝试使用os.path.join,但它有自己的局限性。 除此之外,我认为简单的字符串连接是不可取的。 Pathlib可以是一个选项,但不允许我使用它 导入操作系统 inputpath=“C:\projects\django\hereisinput” lastSlash=left.rfind(\\”) #当操作系统路径连接在斜线处停止时,这将不起作用 outpu

我正在编写一个python脚本,它必须从输入路径内部创建输出路径。然而,我面临着创建路径的问题,无论操作系统如何,我都可以使用该路径

我曾尝试使用os.path.join,但它有自己的局限性。 除此之外,我认为简单的字符串连接是不可取的。 Pathlib可以是一个选项,但不允许我使用它

导入操作系统
inputpath=“C:\projects\django\hereisinput”
lastSlash=left.rfind(\\”)
#当操作系统路径连接在斜线处停止时,这将不起作用
outputDir=os.path.join(左[:lastSlash],“\internal\morelevel\outputpath”)
或
OutDir=left[:lastSlash]+“\internal\morelevel\outputpath”
预期输出路径: C:\projects\django\internal\morelevel\outputpath

此外,上面的代码并不是针对特定操作系统的,在Linux中,斜杠是不同的


os.sep()是某种选项吗?

来自文档
os.path.join
可以加入“一个或多个路径组件…”。因此,您可以将
“\internal\morelevel\outputpath”
拆分为它的每个组件,并将它们全部传递给您的
os.path.join
函数。这样,就不需要“硬编码”路径组件之间的分隔符。例如:

paths = ("internal", "morelevel", "outputpath")
outputDir = os.path.join(left[:lastSlash], *paths)
请记住,反斜杠(
\
)在Python中是一个特殊字符,因此包含单数反斜杠的字符串不会像您期望的那样工作!你需要用前面的另一个
\
来逃离它们


代码的这部分
lastSlash=left.rfind(\\”
也可能无法在任何操作系统上运行。您可以使用类似的方法获取所需路径的最后一部分。例如,
\uLastSlash=os.path.split(左)

假设原始路径为“C:\projects\django\hereisinput”,路径的另一部分为“internal\morelevel\outputpath”(注意这是相对路径,不是绝对路径),则始终可以将主文件夹移回一个(或多个),然后追加第二部分。请注意,您的第一条路径只需要包含文件夹,可以是绝对路径,也可以是相对路径,而您的第二条路径必须始终是相对路径,才能使此黑客程序正常工作

path_1 = r"C:\projects\django\hereisinput"
path_2 = r"internal\morelevel\outputpath"
path_1_one_folder_down = os.path.join(path_1, os.path.pardir)
final_path = os.path.join(path_1_one_folder_down, path_2)
'C:\\projects\\django\\hereisinput\\..\\internal\\morelevel\\outputpath'

当字符串值包含OSpath时,您可以使用:import osUse raw strings,否则可能会出现unicode解码错误。您不应该在
os.path
中使用部分完成的路径,因为该部分不会被修复。它只连接参数,不修复它们:
os.path.join('start','internal','morelevel','outputpath')
是的,谢谢。这似乎是一个不错的选择。我认为python可能有一些标准方法来解决路径的此类问题。因为最后,它是通过在x和y都包含分隔符的地方追加x到y来创建完整路径的。