假设我在同一目录中有文件a.py和b.txt。我不能在那里那个目录,但我知道b.txt将与a.py位于同一目录中。 a.py需要访问b.txt,我该如何找到b.txt的路径?如果用户从保存的目录以外的目录运行程序,那么“./b.txt”之类的东西将无效。
答案 0 :(得分:5)
使用__file__
变量:
os.path.join(os.path.dirname(__file__), "b.txt")
答案 1 :(得分:5)
如果您想要主脚本的位置,即使是可能在导入的模块中运行的代码,您也需要使用sys.argv[0]
而不是__file__
。 (sys.argv[0]
始终是主脚本的路径;请参阅http://docs.python.org/library/sys.html#sys.argv)
如果你想要当前模块的位置,即使它是由其他一些脚本导入的,你也应该像马丁所说的那样使用__file__
。
以下是使用sys.argv[0]
的方法:
import os, sys
dirname, filename = os.path.split(os.path.abspath(sys.argv[0]))
print os.path.join(dirname, "b.txt")