0

所以我有这样的目录结构

  Execute_directory--> execute.py
  |
  Algorithm ---> algorithm.py
            |
            |--> data.txt

所以我在执行目录中,并在我的 python 路径中包含了以下路径。

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + "/../Algorithm")

algorithm.py 有读取 data.txt 的代码

因此,当我运行 execute.py 时, execute.py 调用 algorithm.py 依次读取 data.txt 我认为上面的行应该已经完成​​了这项工作。它能够找到 algorithm.py 但不是 data.txt?

         IOError: [Errno 2] No such file or directory:'data.txt'

任何线索我做错了什么?谢谢

4

3 回答 3

2

你是这样读data.txt的吗algorithm.py

open('data.txt')

因为那是相对于工作目录而不是相对于脚本目录的。

你可以试试algorithm.py这个:

open(os.path.join(os.path.dirname(__file__), 'data.txt'))
于 2012-04-13T07:50:18.370 回答
2

这通常是相对文件名与您期望的位置不相关的问题。打印的内容os.path.abspath(filename)以检查这一点。如果它给你一些奇怪的东西,首先指定绝对路径(当你初始化时filename)应该修复它。

于 2012-04-13T07:52:35.987 回答
1

sys.path用于告诉 Python 在您使用import. 它不影响查找带有open. 打开文件时,相对路径是相对于“当前工作目录”的,您可以os.getcwd使用os.chdir.

奖励:如果您在启动时检查 的值sys.path,您会看到它包括''. 这告诉 Python 还要检查模块的当前工作目录(以及 中的硬编码绝对路径sys.path,这就是为什么如果您在“进入”(使用命令提示符)包含您的模块的文件夹时启动 Python 解释器,您不必告诉它在哪里寻找您的模块。

于 2012-04-13T09:21:38.153 回答