首页 > 解决方案 > 导入时从同一文件夹获取文件(不硬编码路径)

问题描述

我想知道如何在不硬编码路径的情况下访问important_file.txt。我运行从 myfile.py 导入一些代码的 main.py,我需要在其中阅读 important_file.txt 关于如何做到这一点的任何想法?

文件:

main.py
mydir/
    mydir2/
        myfile.py
        important_file.txt

主文件

from mydir.mydir2.myfile import MyClass
MyClass.dostuff()

我的目录/mydir2/myfile.py

class MyClass:
    def dostuff():
        pass
        # something to read important_file.txt
        # without hardcoding it (writing mydir/mydir2/important_file.txt)

命令

python3 main.py

标签: pythonimport

解决方案


您可以使用__file__读取模块的路径。由于myfile.pyimportant_file.txt位于同一目录中,因此您可以使用它os.path.dirname来获取目录的名称并将其与您的文件名连接起来以获取文件的绝对路径.txt。在你myfile.py做的:

import os


class MyClass:
    def dostuff():
        dirname = os.path.dirname(__file__)
        with open(os.path.join(dirname, "important_file.txt")) as f:
            print(f.read())

推荐阅读