从导入模块的目录中读取文件

Reading a file from the directory which module is imported

我正在尝试读取我在 Python 中创建的自定义模块中的文件。但是当我尝试这样做时它显示错误。

目录结构

base/
|
|_ app.py
|_ cmod/
   |
   |_ __init__.py
   |_ util.py
   |_ db.csv

util.py 片段

from csvhandler import CSVFile

def get_db():
    with open("db.csv", "r+") as db:
        data = CSVFile(db)
    return data

app.py 片段

from cmod import util
data = util.get_db()

它抛出以下错误

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

placement导入有问题吗?
注意:db.csv 必须放在那里。

你 运行 时的当前工作目录这很可能是 app.py 所在的目录。open() 在当前工作目录中查找文件,而不是当前正在执行的文件的目录。

打开相对存储的文件最便携的方法是获取 python 文件的完整路径,隔离目录,然后加入它。

util.py

import os

def get_db():
    directory = os.path.dirname(__file__)
    with open(os.path.join(directory, "db.csv"), "r+") as db:
        data = CSVFile(db)
    return data