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

2 投票
1 回答
4287 浏览
提问于 2025-04-18 11:48

我有一个叫做 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 个回答

10

这只是我的猜测,但你可以试试

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

或者可能更推荐这样做

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

撰写回答