无法找到文本文件

时间:2012-04-13 07:46:03

标签: python

所以我有像这样的目录struture

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

所以我在execute目录中并且包含了以下路径到我的python路径。

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

algorithm.py有一个代码来读取data.txt

因此,当我运行execute.py时,execute.py会调用algorithm.py,而algorithm.py又会读取data.txt 我认为上面的线应该完成这项工作。它能够找到algorithm.py但不能找到data.txt ??

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

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

3 个答案:

答案 0 :(得分:2)

您是否正在data.txt中阅读algorithm.py,如下所示:

open('data.txt')

因为它与工作目录相关,而不是相对于脚本目录。

algorithm.py你可以试试这个:

open(os.path.join(os.path.dirname(__file__), 'data.txt'))

答案 1 :(得分:2)

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

答案 2 :(得分:1)

sys.path用于告诉Python在使用import时在哪里查找模块。它不会影响查找open的文件。当您打开文件时,相对路径相对于“当前工作目录”,您可以使用os.getcwd进行检查,然后使用os.chdir进行更改。

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