我想获取当前目录的路径,在该目录下执行.py文件.
例如,一个D:\test.py包含代码的简单文件:
import os
print os.getcwd()
print os.path.basename(__file__)
print os.path.abspath(__file__)
print os.path.dirname(__file__)
Run Code Online (Sandbox Code Playgroud)
输出结果是奇怪的:
D:\
test.py
D:\test.py
EMPTY
Run Code Online (Sandbox Code Playgroud)
我期待从相同的结果getcwd()和path.dirname().
鉴于os.path.abspath = os.path.dirname + os.path.basename,为什么
os.path.dirname(__file__)
Run Code Online (Sandbox Code Playgroud)
返回空?
Sve*_*ach 237
因为os.path.abspath = os.path.dirname + os.path.basename不成立.我们宁愿拥有
os.path.dirname(filename) + os.path.basename(filename) == filename
Run Code Online (Sandbox Code Playgroud)
双方dirname()并basename()只拆分通过文件名成组件,而不考虑当前目录.如果您还想考虑当前目录,则必须明确地这样做.
要获取绝对路径的dirname,请使用
os.path.dirname(os.path.abspath(__file__))
Run Code Online (Sandbox Code Playgroud)
小智 7
import os.path
dirname = os.path.dirname(__file__) or '.'
Run Code Online (Sandbox Code Playgroud)
os.path.split(os.path.realpath(__file__))[0]
Run Code Online (Sandbox Code Playgroud)
os.path.realpath(__file__)返回当前脚本的绝对路径;os.path.split(abspath)[0] 返回当前目录
从Python 3.4开始,你可以使用pathlib获取文件的目录:
from pathlib import Path\n\n# get parent directory\ncurr_dir = Path(__file__).parent\n\nfile_path = curr_dir.joinpath(\'otherfile.txt\')\nRun Code Online (Sandbox Code Playgroud)\n编辑:要获取当前目录,请使用
\nPath.cwd()\nRun Code Online (Sandbox Code Playgroud)\n谢谢@Nuno Andr\xc3\xa9
| 归档时间: |
|
| 查看次数: |
181212 次 |
| 最近记录: |