从不同的 .py 文件调用函数时找不到 Errno 2 文件
Errno 2 file not found when calling a function from a different .py file
我创建了一个从文件中读取数据并将其数据保存在数组中的函数。
这个函数在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)
此功能有效,文件位置没有问题。但是当我在我的 Forum.py
模块中导入 Posts.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()
注意:我已经在 Whosebug 上找到了一些解决方案,但它们大多包括使路径成为绝对路径,这在此处不是一个选项。
Posts.py
和 Forum.py
在同一文件夹中。
这是文件在项目中的位置的一种表示:
Project/Forum.py
Project/Posts.py
Project/Forum/主题/index.txt
Project/otherStuff...
编辑:发现问题... Forum.py 的工作目录不正确,这就是它把一切搞砸的原因。它有错误的工作目录,因为当我第一次制作模块时,我把它放在了错误的文件夹中。然后当我意识到我的错误时,我只是把它复制到正确的地方,但是工作目录保持不变...
仅当您 运行 python Forum.py
位于 Forum
目录所在的同一目录时,此代码才有效。
更新:
我在笔记本电脑上重新创建了您的案例,一切正常。请检查代码:
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
运行 & 输出:
$ pwd
/Users/myuser/Forum
$ python Forum.py
test text
您应该考虑将路径作为参数传递给 loadTopic 函数,并在 Forum.py
中的调用中传递它
这样你就不会在加载模块上硬编码绝对路径。
我创建了一个从文件中读取数据并将其数据保存在数组中的函数。
这个函数在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)
此功能有效,文件位置没有问题。但是当我在我的 Forum.py
模块中导入 Posts.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()
注意:我已经在 Whosebug 上找到了一些解决方案,但它们大多包括使路径成为绝对路径,这在此处不是一个选项。
Posts.py
和 Forum.py
在同一文件夹中。
这是文件在项目中的位置的一种表示:
Project/Forum.py
Project/Posts.py
Project/Forum/主题/index.txt
Project/otherStuff...
编辑:发现问题... Forum.py 的工作目录不正确,这就是它把一切搞砸的原因。它有错误的工作目录,因为当我第一次制作模块时,我把它放在了错误的文件夹中。然后当我意识到我的错误时,我只是把它复制到正确的地方,但是工作目录保持不变...
仅当您 运行 python Forum.py
位于 Forum
目录所在的同一目录时,此代码才有效。
更新: 我在笔记本电脑上重新创建了您的案例,一切正常。请检查代码:
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
运行 & 输出:
$ pwd
/Users/myuser/Forum
$ python Forum.py
test text
您应该考虑将路径作为参数传递给 loadTopic 函数,并在 Forum.py
中的调用中传递它这样你就不会在加载模块上硬编码绝对路径。