Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么它会显示;关闭文件上的I/O操作“;在Django?_Python_Django - Fatal编程技术网

Python 为什么它会显示;关闭文件上的I/O操作“;在Django?

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(

我正在做一个项目,在这个项目中,用户从前端上传一个文件,而不存储该文件,它会进入后端,在后端完成一些处理并返回结果。以下是在views.py文件中处理这些工作的函数:

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我试过你说的,但仍然显示出相同的错误。你现在应该相应地更新问题。另外,只需粘贴完整的错误堆栈跟踪。那里有更多的信息。