如果我有一个名为 example.py 的 Python 文件,上面写着 with open('%s/data.csv' % sys.path[0]) as var_name:
and data.csv is in与 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
最佳答案
只是猜测但尝试
with open('%s/data.csv' % os.path.dirname(__file__)) as ...
或者甚至可能更喜欢
file_path = os.path.join(os.path.dirname(__file__),"data.csv")
关于Python,引用与运行文件同目录下的一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24520329/