从不同的 .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.pyForum.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

中的调用中传递它

这样你就不会在加载模块上硬编码绝对路径。