ValueError: операция ввода-вывода в закрытом файле, при вызове функции более одного раза - PullRequest
0 голосов
/ 06 августа 2020

Я реализую приложение для реагирования, в котором я вызываю некоторые конечные точки, используя 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...