我想在 python 中构建一个绝对路径,同时对路径分隔符之类的东西保持相当的清醒。
edit0:例如,我的文件系统的根目录/etc/init.d
(或C:\etc\init.d
w32 上)有一个目录,我只想从元素etc
和init.d
(在 w32 上,我可能还需要一个磁盘 ID,比如C:
)构造它
为了不必担心路径分隔符,os.join.path()
显然是首选工具。但似乎这只会创建相对路径:
print("MYPATH: %s" % (os.path.join('etc', 'init.d'),)
MYPATH: etc/init.d
添加一个虚拟的第一个元素(例如''
)没有任何帮助:
print("MYPATH: %s" % (os.path.join('', 'etc', 'init.d'),)
MYPATH: etc/init.d
使第一个元素绝对化显然有帮助,但这种方式违背了使用的想法os.path.join()
print("MYPATH: %s" % (os.path.join('/etc', 'init.d'),)
MYPATH: /etc/init.d
edit1: usingos.path.abspath()
只会尝试将相对路径转换为绝对路径。例如,考虑在工作目录中运行以下命令/home/foo
:
print("MYPATH: %s" % (os.path.abspath(os.path.join('etc', 'init.d')),)
MYPATH: /home/foo/etc/init.d
那么,“root”路径的标准跨平台方式是什么?
root = ??? # <--
print("MYPATH: %s" % (os.path.join(root, 'etc', 'init.d'),)
MYPATH: /etc/init.d
编辑2:问题真正归结为:由于前导斜杠/etc/init.d
使这条路径成为绝对路径,有没有办法以编程方式构造这个前导斜杠?(我不想假设前导斜杠表示绝对路径)