Python,在同一目录中找到文件

2 python

假设我在同一目录中有文件a.py和b.txt。我无法保证该目录在哪里,但是我知道b.txt将与a.py位于同一目录中。a.py需要访问b.txt,我该如何找到b.txt的路径?如果用户从保存目录以外的目录运行该程序,则“ ./b.txt”之类的内容将无法正常工作。

Mar*_*wis 5

使用__file__变量:

os.path.join(os.path.dirname(__file__), "b.txt")
Run Code Online (Sandbox Code Playgroud)


Ric*_*dle 5

如果您想要主脚本的位置,即使是从可能在导入模块中运行的代码中查找,也需要使用sys.argv[0]而不是__file__。(sys.argv[0]始终是主脚本的路径;请参阅http://docs.python.org/library/sys.html#sys.argv

如果您想知道当前模块的位置,即使它是由其他脚本导入的,也应该__file__像Martin所说的那样使用。

这是一种使用方法sys.argv[0]

import os, sys
dirname, filename = os.path.split(os.path.abspath(sys.argv[0]))
print os.path.join(dirname, "b.txt")
Run Code Online (Sandbox Code Playgroud)