我想获取执行.py文件的当前目录的路径。
例如一个简单的文件D:\test.py
,代码为:
import os
print os.getcwd()
print os.path.basename(__file__)
print os.path.abspath(__file__)
print os.path.dirname(__file__)
输出是:
,这很奇怪D:\
test.py
D:\test.py
EMPTY
我期待来自getcwd()
和path.dirname()
的结果相同。
鉴于os.path.abspath = os.path.dirname + os.path.basename
,为什么
os.path.dirname(__file__)
返回空?
答案 0 :(得分:229)
因为os.path.abspath = os.path.dirname + os.path.basename
不成立。我们宁愿拥有
os.path.dirname(filename) + os.path.basename(filename) == filename
dirname()
和basename()
仅将传递的文件名拆分为组件,而不考虑当前目录。如果您还想考虑当前目录,则必须明确地这样做。
要获取绝对路径的dirname,请使用
os.path.dirname(os.path.abspath(__file__))
答案 1 :(得分:8)
也可以这样使用:
dirname(dirname(abspath(__file__)))
答案 2 :(得分:4)
print(os.path.join(os.path.dirname(__file__)))
你也可以这样使用
答案 3 :(得分:4)
os.path.split(os.path.realpath(__file__))[0]
os.path.realpath(__file__)
返回当前脚本的abspath; os.path.split(abspath)[0]返回当前目录
答案 4 :(得分:2)
import os.path
dirname = os.path.dirname(__file__) or '.'
答案 5 :(得分:1)
从 Python 3.4 开始,您可以使用 pathlib
获取当前目录:
from pathlib import Path
# get parent directory
curr_dir = Path(__file__).parent
file_path = curr_dir.joinpath('otherfile.txt')