Python,引用与运行文件在同一目录中的文件

时间:2014-07-01 22:45:49

标签: python file reference sys

如果我有一个名为example.py的Python文件,其中显示with open('%s/data.csv' % sys.path[0]) as var_name:并且data.csv与example.py位于同一目录中,那么如果我从终端运行example.py,那么它可以正常工作unittest它不起作用。我的理解是,当从终端运行它时,sys.path [0]为我提供了正在运行的文件的路径(example.py),因此如果data.csv和example.py在同一目录中,那么sys。 path [0] /data.csv将正确找到data.csv。但是当unittest运行时,对于任何幕后原因,sys.path [0]为空,并且正确找不到/data.csv。

所以我想知道一个好的策略(也许是一些显式的代码:))是为了让这个引用总是工作无论如何(我猜没有sys.path [0]但是如果有一些适用于那个我会接受它。)

我还应该提到我在OS X 10.9.3上并使用python 2.7

1 个答案:

答案 0 :(得分:8)

只是一个猜测,但尝试

with open('%s/data.csv' % os.path.dirname(__file__)) as ...

或者甚至可能更喜欢

 file_path = os.path.join(os.path.dirname(__file__),"data.csv")