Python,引用与运行文件同目录下的一个文件

标签 python file reference sys

如果我有一个名为 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/

相关文章:

java - 如何在 Java 中将对单个数组的所有引用更改为 null

c++ - *&vs&in将变量传递给函数

python - 如何在 python 中调用外部程序并检索输出和返回代码?

bash - 如何与 bash 同时处理文件?

c - *nix : "echo ' start working' >/etc/. 示例”: how is this implemented?

java - 文件系统和 Java 中的 jar/zip 上的抽象层

Python:为什么我会收到 WinError 32?

python - 如何抓取两个 URL 并将每个 URL 的元素放入一个表中?

Python 循环并创建单独的列表

class - 使用类引用进行多态和继承(第2部分)?