如果我有一个名为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
答案 0 :(得分:8)
只是一个猜测,但尝试
with open('%s/data.csv' % os.path.dirname(__file__)) as ...
或者甚至可能更喜欢
file_path = os.path.join(os.path.dirname(__file__),"data.csv")