我正在编写一个python脚本,它必须从输入路径内部创建输出路径。然而,我面临的问题是如何创建一条不受操作系统限制的路径
我尝试过使用os.path.join,但它有自己的局限性。 除此之外,我认为简单的字符串连接不是一个好办法。 Pathlib可以是一个选项,但我不允许使用它
import os
inputpath = "C:\projects\django\hereisinput"
lastSlash = left.rfind("\\")
# This won't work as os path join stops at a slash
outputDir = os.path.join(left[:lastSlash], "\internal\morelevel\outputpath")
OR
OutDir = left[:lastSlash] + "\internal\morelevel\outputpath"
预期输出路径: C:\projects\django\internal\morelevel\outputpath项目
另外,上面的代码并不是针对特定操作系统的,在Linux中,斜杠是不同的
os.sep()是一种选择吗
假设原始路径为“C:\projects\django\hereisinput”,路径的另一部分为“internal\morelevel\outputpath”(请注意,这是一个相对路径,而不是绝对路径),则始终可以将主文件夹移回一个(或多个)文件夹,然后附加第二部分。请注意,第一条路径只需要包含文件夹,可以是绝对路径,也可以是相对路径,而第二条路径必须始终是相对路径,才能使此黑客程序正常工作
从文档中
os.path.join
可以加入“一个或多个路径组件…”。因此您可以将"\internal\morelevel\outputpath"
分解为它的每个组件,并将它们全部传递给os.path.join
函数。这样就不需要对路径组件之间的分隔符进行“硬编码”。例如:请记住,反斜杠(
\
)是Python中的一个特殊字符,因此包含单数反斜杠的字符串不会像您期望的那样工作!你需要用另一个在前面的\
来逃离他们这部分代码} 之类的方法来获取所需路径的最后一部分。例如,
lastSlash = left.rfind("\\")
也可能无法在任何操作系统上运行。您可以使用^{_, lastSlash = os.path.split(left)
相关问题 更多 >
编程相关推荐