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

时间:2009-08-22 07:31:51

标签: python

假设我在同一目录中有文件a.py和b.txt。我不能在那里那个目录,但我知道b.txt将与a.py位于同一目录中。 a.py需要访问b.txt,我该如何找到b.txt的路径?如果用户从保存的目录以外的目录运行程序,那么“./b.txt”之类的东西将无效。

2 个答案:

答案 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")