我具有以下文件结构:
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脚本存储在除顶层以外的任何位置。
如果跨代码库在不同脚本中导入类,是否有任何方法可以使类具有一些存储的文件路径而不会导致找不到文件错误?
答案 0 :(得分:3)
尝试在当前文件解析的路径中指定文件。例如,如果您的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中的魔术变量,用于告诉您您所在的文件。
基本上,每当您的脚本尝试打开文件时,该文件都是相对于当前目录的。因此,您需要上述技巧来查找相对于脚本目录而不是当前目录的文件。