我创建了一个从文件中读取并将其数据保存在数组中的函数。
此功能位于Posts.py
:
index = 'Forum/Topics/index.txt'
def loadTopicNames():
with open(index, 'r') as file:
data = file.readlines()
for row in data:
row = row.replace('\n', '')
topicNames.append(row)
此功能有效,文件位置没有问题。但是当我在Posts.py
模块中导入Forum.py
模块并从Forum.py
执行它时,我收到此错误:
with open(index, 'r') as file:
FileNotFoundError: [Errno 2] No such file or directory: 'Forum/Topics/index.txt'
以下是Forum.py
的相关代码:
import Posts
Posts.loadTopicNames()
注意:我已经在stackoverflow上找到了一些解决方案,但它们主要包括使路径绝对,这不是一个选项。
Posts.py
和Forum.py
位于同一文件夹中。
这表示文件在项目中的位置:
项目/ Forum.py
项目/ Posts.py
项目/论坛/主题/ index.txt
项目/ otherStuff ...
编辑:发现问题... Forum.py的工作目录不正确,这就是它搞砸了一切的原因。它有错误的工作目录,因为当我第一次制作模块时,我把它放在一个错误的文件夹中。然后,当我意识到自己的错误时,我只是把它复制到了正确的地方,但是工作目录保持不变......
答案 0 :(得分:1)
只有在python Forum.py
目录所在的同一目录中运行Forum
时,此代码才有效。
<强> UPD:强> 我在笔记本电脑上重新创建了你的案例,一切正常。请检查代码:
Posts.py:
index = 'Forum/Topics/index.txt'
def loadTopicNames():
with open(index, 'r') as file:
data = file.readlines()
for row in data:
print(row)
Forum.py:
import Posts
Posts.loadTopicNames()
index.txt:
test text
项目目录:
$ ls -R
Forum Forum.py Posts.py
./Forum:
Topics
./Forum/Topics:
index.txt
Run&amp;输出:
$ pwd
/Users/myuser/Forum
$ python Forum.py
test text
答案 1 :(得分:0)
您应该考虑将路径作为参数传递给loadTopic函数,并在Forum.py中的调用中传递它
这样你就不会在加载模块上硬编码绝对路径。