父文件夹脚本FileNotFoundE

2024-05-19 21:55:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我的Python应用程序包含一个名为Tests的子文件夹,我用它来运行单元测试。我所有的文件都在父文件夹中,我称之为App。Tests文件夹包含一个测试.py文件。应用程序文件夹包含应用程序类型文件和文件文件.txt文本文件。你知道吗

在我的测试.py文件,我可以这样导入:

import sys
sys.path.append("PATH_TO_PARENT_DIR")

说我的应用程序类型文件包含以下内容:

class Stuff():
    def do_stuff():
        with open("file.txt") as f:
            pass

现在如果我跑测试.py,我得到以下错误:

FileNotFoundError: [Errno 2] No such file or directory: 'file.txt'

我怎样才能解决这个问题?非常感谢!你知道吗


Tags: 文件pathpyimporttxt文件夹app应用程序
2条回答

open函数在文件夹中查找与调用open函数的脚本相同的文件。因此,您的test.py在tests文件夹中,而不是app文件夹中。您需要添加文件的完整路径。你知道吗

open('app_folder' + 'text.txt')

或者将test.py文件移动到与text.txt相同的文件夹中

假设文件与脚本位于同一文件夹中:

import os
parent_dir = os.path.abspath(os.path.dirname(__file__))
class Stuff():
    def do_stuff():
        with open(os.path.join(parent_dir, "file.txt")) as f:
            pass

说明:

__file__是脚本的路径

os.path.dirnameget是脚本所在的目录

os.path.abspath使该路径成为绝对路径而不是相对路径(以防相对路径弄乱脚本,这是一种很好的做法)

然后我们需要做的就是将parent_dir与文件结合起来,我们使用os.path.join。你知道吗

阅读os.path方法的文档:https://docs.python.org/3/library/os.path.html

如果这有帮助,可以这样编写此代码的更明确版本:

import os
script_path = __file__
parent_dir = os.path.dirname(script_path)
parent_dir_absolute = os.path.abspath(parent_dir)
path_to_txt = os.path.join(parent_dir_absolute, 'file.txt')

相关问题 更多 >