从其他.py文件调用函数时找不到Errno 2文件

时间:2018-01-17 23:33:28

标签: python import module ioerror

我创建了一个从文件中读取并将其数据保存在数组中的函数。

此功能位于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.pyForum.py位于同一文件夹中。

这表示文件在项目中的位置:

项目/ Forum.py

项目/ Posts.py

项目/论坛/主题/ index.txt

项目/ otherStuff ...

编辑:发现问题... Forum.py的工作目录不正确,这就是它搞砸了一切的原因。它有错误的工作目录,因为当我第一次制作模块时,我把它放在一个错误的文件夹中。然后,当我意识到自己的错误时,我只是把它复制到了正确的地方,但是工作目录保持不变......

2 个答案:

答案 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中的调用中传递它

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