Python 为什么它会显示;关闭文件上的I/O操作“;在Django?
我正在做一个项目,在这个项目中,用户从前端上传一个文件,而不存储该文件,它会进入后端,在后端完成一些处理并返回结果。以下是在views.py文件中处理这些工作的函数:Python 为什么它会显示;关闭文件上的I/O操作“;在Django?,python,django,Python,Django,我正在做一个项目,在这个项目中,用户从前端上传一个文件,而不存储该文件,它会进入后端,在后端完成一些处理并返回结果。以下是在views.py文件中处理这些工作的函数: def midpro(request, *args): global file if(request.method == 'POST'): try: file = request.FILES['data'] except: print(
def midpro(request, *args):
global file
if(request.method == 'POST'):
try:
file = request.FILES['data']
except:
print("No File")
if(file!=None):
if(file.name[-1:-4:-1]!="vsc"):
return render(request, 'mapp/nocsv.html')
else:
return linml(request)
return render(request, 'mapp/nofile.html')
def linml(request, *args):
global retdata
global file
ans = list()
col = ['D1', 'D2']
if(file!=None):
ins = mapp.Mapp(file)
retdata = ins.linml()
for i in zip(col, retdata):
ans.append(i)
context = {
'ans':ans,
'data':file
}
return render(request, 'mapp/linml.html', context)
Mapp类中的代码是
class Mapp:
def __init__(self, file):
self.file = file
def linml(self, *args):
data = pd.read_csv(self.file)
data = np.array(data)
return([np.mean(data), np.var(data)])
pd
是pandas
库的别名
np
是numpy
库的别名
关闭文件上的错误I/O操作发生在data=pd.read\u csv(self.file)
步骤中
谁能告诉我如何解决这个问题
此外,如果我尝试使用以下命令显式打开文件:
with open(self.file) as f:
它显示了预期的str、bytes或os.PathLike对象,而不是InMemoryUploadedFile错误,我想这意味着文件已经打开
所以,任何人请告诉我为什么对关闭的文件执行I/O操作 您所显示的代码似乎不是一个bug。但是,我确实看到您使用了
全局文件
。使用globals从来都不是一个好主意,尤其是当您将它们称为文件时!我建议你重构你的代码,这样它就不会使用全局变量,那么这个bug可能会自行消失。祝你好运。@HielkeWalinga我试过你说的,但仍然显示出相同的错误。你现在应该相应地更新问题。另外,只需粘贴完整的错误堆栈跟踪。那里有更多的信息。