Я реализую приложение для реагирования, в котором я вызываю некоторые конечные точки, используя flask, когда я запускаю код flask в первый раз, он работает нормально, но при повторном запуске он дает мне эту ошибку:
print("End of Iterations")
ValueError: I/O operation on closed file.
Это странно, потому что все файлы, которые я открыл, я закрыл, и это показывает, что ошибка находится в строке печати, кто-нибудь может мне помочь, пожалуйста.
Это часть функции, которая вызывает другую функцию, в которой возникает ошибка:
data= request.get_json()['tree']
data2=request.get_json()['Product_subproduct']
Data_name=data2['SelectedProduct']+'_'+data2['SelectedSubproduct']+'.csv'
with open(Data_name,'r') as csvfile:
Datasett=pd.read_csv(csvfile)
if (len(data['final_result']))!=0:
Features=[]
Selection=[]
for i in range(0,len(data['final_result'])):
Features.append(data['final_result'][i]['questions'])
Selection.append(data['final_result'][i]['answers'])
Features_Selection = dict(zip(Features, Selection))
df = DataFrame(list(Features_Selection.items()))
dataCOPY = deepcopy( Datasett)
for i in range(0,len(df)):
dataCOPY=dataCOPY[dataCOPY[df[0][i]]== df[1][i]]
dataCOPY=dataCOPY.drop(df[0][i], axis=1)
dataCOPY= dataCOPY.reset_index(drop=True)
df_copy=dataCOPY.copy()
_,size=df_copy.shape
X = df_copy.iloc[:, 0:df_copy.shape[1]-1]
y = df_copy.iloc[:,size-1]
dt_model = dt_c45(Xdata = X, ydata = y, cat_missing = "none", num_missing = "none", pre_pruning = "none", chi_lim = 0.1, min_lim = 5)
Функция, в которой возникает проблема:
while (i < stop):
impurity = np.amax(gain_ratio)
gain_ratio.fill(0)
for element in range(1, branch[i].shape[1]):
if len(branch[i]) == 0:
skip_update = True
break
print(len(np.unique(branch[i][0])))
if len(np.unique(branch[i][0])) == 1 or len(branch[i]) == 1:
if "." not in rule[i]:
rule[i] = rule[i] + " THEN " + name + " = " + branch[i].iloc[0, 0] + "."
rule[i] = rule[i].replace(" AND THEN ", " THEN ")
skip_update = True
break