我想在Python中构建一个绝对路径,同时不关心诸如路径分隔符之类的事情。
编辑0:例如,在文件系统根目录下有一个目录/etc/init.d
(在w32上为C:\etc\init.d
),我只想从元素etc
和init.d
(在w32上,我可能还需要磁盘ID,例如C:
)构建此路径。
为了不必担心路径分隔符,显然最好使用os.path.join()
这个工具。但是它似乎只会创建相对路径:
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
编辑1:使用os.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
中的前导斜杠使该路径成为绝对路径,是否有一种以编程方式构建此前导斜杠的方法?(我不想做出前导斜杠表示绝对路径的假设)
os.path.abspath('python.exe')
,在我的Windows机器上返回'C:\\Python27\\python.exe'
。 - Bradroot_dir="C:/Users/folder"
和filename="data/file1.txt"
连接起来以获得绝对路径?在非 Windows 系统中,只需使用os.path.join(root_dir, filename)
即可轻松解决,但我在 Windows 中找不到解决方案。 - mikey