如何在Python中获取绝对文件路径

1043 投票
11 回答
1471137 浏览
提问于 2025-04-11 09:20

假设你有一个路径,比如 "mydir/myfile.txt",那么在Python中,怎么找到这个文件的绝对路径呢?比如在Windows系统上,你可能会得到这样的结果:

"C:/example/cwd/mydir/myfile.txt"

11 个回答

39
import os
os.path.abspath(os.path.expanduser(os.path.expandvars(PathNameString)))

请注意,在Unix系统中,使用expanduser是必要的,因为文件(或目录)名称和位置的表达式可能以~/开头(这个波浪号代表用户的主目录)。而expandvars则负责处理其他环境变量(比如$HOME)。

135

你可以使用新的Python 3.4库 pathlib。如果你在用Python 2.6或2.7,也可以通过 pip install pathlib 来安装它。这个库的作者们写道:“这个库的目的是提供一个简单的类层次结构,用来处理文件系统路径以及用户常用的操作。”

在Windows系统中获取绝对路径的方法是:

>>> from pathlib import Path
>>> p = Path("pythonw.exe").resolve()
>>> p
WindowsPath('C:/Python27/pythonw.exe')
>>> str(p)
'C:\\Python27\\pythonw.exe'

在UNIX系统中则是:

>>> from pathlib import Path
>>> p = Path("python3.4").resolve()
>>> p
PosixPath('/opt/python3/bin/python3.4')
>>> str(p)
'/opt/python3/bin/python3.4'

相关文档可以在这里找到: https://docs.python.org/3/library/pathlib.html

1503
>>> import os
>>> os.path.abspath("mydir/myfile.txt")
'C:/example/cwd/mydir/myfile.txt'
>>> import os
>>> os.path.abspath("C:/example/cwd/mydir/myfile.txt")
'C:/example/cwd/mydir/myfile.txt'

如果它已经是一个绝对路径,这个方法也能正常工作:

撰写回答