相关疑难解决方法(0)

用os.path.join()构造绝对路径

我想在python中构造一个绝对路径,同时保持对路径分隔符之类的东西的相当遗忘.

edit0:比如有我的文件系统的根目录/etc/init.d(或C:\etc\init.dW32上),我想只从要素建设这个etcinit.d(W32上,我可能还需要一个磁盘ID,如C:)

为了不必担心路径分离器,os.join.path()显然是选择的工具.但似乎这只会创建相对路径:

 print "MYPATH:", os.path.join('etc', 'init.d')
 MYPATH: etc/init.d
Run Code Online (Sandbox Code Playgroud)

添加虚拟第一元素(例如'')对任何事情没有帮助:

 print "MYPATH:", os.path.join('', 'etc', 'init.d')
 MYPATH: etc/init.d
Run Code Online (Sandbox Code Playgroud)

使第一个元素绝对显然有帮助,但这种方式违背了使用的想法 os.path.join()

 print "MYPATH:", os.path.join('/etc', 'init.d')
 MYPATH: /etc/init.d
Run Code Online (Sandbox Code Playgroud)

edit1: using os.path.abspath()只会尝试将相对路径转换为绝对路径.例如,考虑在工作目录中运行以下命令/home/foo:

 print "MYPATH:", os.path.abspath(os.path.join('etc', 'init.d'))
 MYPATH: /home/foo/etc/init.d
Run Code Online (Sandbox Code Playgroud)

那么,"根"路径的标准跨平台方式是什么?

 root = ??? # <--
 print "MYPATH:", os.path.join(root, 'etc', 'init.d')
 MYPATH: /etc/init.d
Run Code Online (Sandbox Code Playgroud)

edit2:这个问题真的归结为:由于前导斜杠/etc/init.d使得这条路径成为绝对路径,有没有办法以编程方式构造这个前导斜杠?(我不想假设前导斜杠表示绝对路径)

python path absolute-path

42
推荐指数
2
解决办法
5万
查看次数

标签 统计

absolute-path ×1

path ×1

python ×1