首页 > 解决方案 > 导入包含要读取的文件路径的类

问题描述

我有以下文件结构:

app/
  data/
    data.csv
  module/
    __init__.py
    script.py
  __init__.py
  config.py

我的配置类包含一组从 csv 文件中读取的 Pandas 数据帧。这些数据框在我的代码库中使用:

import pandas as pd

class Config:
     data = pd.read_csv('data/data.csv')
     data2 = pd.read_csv('data/data2.csv')

我的脚本包含:

from config import Config

返回:

FileNotFoundError: File b'data/data.csv' does not exist

如果 run.py 脚本存储在除顶层之外的任何位置。

如果在跨代码库的不同脚本中导入类,有没有办法让类具有一些存储的文件路径而不会导致找不到文件错误?

标签: pythonpython-3.x

解决方案


尝试指定当前文件解析的路径中的文件。例如,如果您app/config.py是这样的:

import pandas as pd

class Config:
     data = pd.read_csv('data/data.csv')
     data2 = pd.read_csv('data/data2.csv')

你想这样写路径:

     mydir = os.path.dirname(os.path.abspath(__file__))
     data = pd.read_csv(os.path.join(mydir, 'data/data.csv'))
     data2 = pd.read_csv(os.path.join(mydir, 'data/data2.csv'))

__file__是 Python 中的魔术变量,可以告诉您您所在的文件。

基本上,每当您的脚本尝试打开文件时,它都是相对于您的当前目录的。因此,您需要上述技巧来查找相对于脚本目录而不是当前目录的文件。


推荐阅读