所以我有像这样的目录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'
任何线索我做错了什么? 感谢
答案 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解释器的原因包含模块的文件夹,您无需告诉它在哪里查找模块。