我正在尝试使用此代码打开数据库,但出现错误消息。 这是我的代码:
def load_data(data_path='.', expnames=('R1','R2','R3','R4'), segments=('wait','blanking','preeject','eject'), fnpattern='AKF_E_{exp_desn}_Stempel_1_Formular_punches_segment_{segment}'):
'''
Creat a dictionary to save all the loaded rawdata for easily calling out
Parameters
-----------------
data_path: path of the needed datasets
Returns
-----------------
out_data:dict
dictionary that contains loaded datasets of R1,R2,R3,R4
'''
out_data={}
for exp_desn in expnames:
row={}
for segment in segments:
dbname=os.path.join(data_path, exp_desn, fnpattern.format(segment=segment, exp_desn=exp_desn) )
#assert os.path.exists(dbname+'.db')
data=load_all_segments(dbname)
row[segment] = data
out_data[exp_desn] = row
return out_data```
这就是我如何调用函数以加载数据的方法:
rawdata_R =
load_data("\\Users\\Fast\\senseering\\raw_data", ('R1','R2','R3','R4'), ('wait','blanking','preeject','eject'), 'AKF_E_{exp_desn}_Stempel_1_Formular_punches_segment_{segment}')
但是我收到此错误,我不明白哪里出了问题:
OperationalError Traceback (most recent call last)
<ipython-input-17-30cfc39001e5> in <module>
----> 1 rawdata_R = load_data("\\Users\\Fast\\senseering\\raw_data", ('R1','R2','R3','R4'), ('wait','blanking','preeject','eject'), 'AKF_E_{exp_desn}_Stempel_1_Formular_punches_segment_{segment}')
<ipython-input-8-a923a3777194> in load_data(data_path, expnames, segments, fnpattern)
44 dbname=os.path.join(data_path, exp_desn, fnpattern.format(segment=segment, exp_desn=exp_desn) )
45 #assert os.path.exists(dbname+'.db')
---> 46 data=load_all_segments(dbname)
47 row[segment] = data
48 out_data[exp_desn] = row
<ipython-input-8-a923a3777194> in load_all_segments(db_name, segment)
1 def load_all_segments(db_name, segment=""):
----> 2 conn = sqlite3.connect(db_name + ".db")
3 df_names = pd.read_sql_query("SELECT name FROM sqlite_master WHERE type='table';", conn)
4 df_all = pd.DataFrame()
5
OperationalError: unable to open database file
任何人都可以告诉我问题出在哪里以及如何解决。
答案 0 :(得分:-1)
谢谢您的帮助。
这是答案: 代替:
dbname=os.path.join(data_path, exp_desn, fnpattern.format(segment=segment, exp_desn=exp_desn) )
我应该使用以下内容:
dbname=os.path.join(data_path, fnpattern.format(segment=segment, exp_desn=exp_desn) )
差异与文件夹的路径有关。 第一个建议在路径文件夹中我拥有exp_desn,而我没有,这就是为什么我无法打开它的原因。一旦删除它,我的数据就可以访问了。