Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.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 如何比较Django中的两个文本文件?_Python_Django_Web - Fatal编程技术网

Python 如何比较Django中的两个文本文件?

Python 如何比较Django中的两个文本文件?,python,django,web,Python,Django,Web,我正在Django建立一个在线法官系统,就像我们之前在Kickstart中使用的那样 他们给了你一个文本文件,input.txt,然后你以output.txt文件的形式运行后得到了一个输出 我知道这在Python中是如何实现的,但我不确定如何在Django应用程序中实现它 我的部分理解: 用户向表单提交output.txt文件,然后我们需要使用form\u class参数在views.py中实现Python函数。(因为我正在使用CBV) 但问题是,我无法弄清楚基于类的FormView(或Upda

我正在Django建立一个在线法官系统,就像我们之前在Kickstart中使用的那样

他们给了你一个文本文件,
input.txt
,然后你以
output.txt
文件的形式运行后得到了一个输出

我知道这在Python中是如何实现的,但我不确定如何在Django应用程序中实现它

我的部分理解:

用户向表单提交
output.txt
文件,然后我们需要使用
form\u class
参数在
views.py
中实现Python函数。(因为我正在使用CBV)

但问题是,我无法弄清楚基于类的
FormView
(或
UpdateView
)视图如何将该函数应用于上传的文件

Tl;dr:如何在Django中实现一个Python函数,比较两个文本文件并返回相同的文本文件

另外,我不包括在线评委的编译器,因为我正处于这个应用的早期阶段,这可能是一笔开销


编辑:已解决

基本上,您需要为上载它们的两个文本文件创建一个表单(有关更多信息,请查看此项目:)。这将使用您的文件创建post请求。然后,在您的视图中,您可以通过访问请求后数据(
request.files['file1']
)来获取文件。然后可以在这些文件上运行python函数。这个函数应该是比较函数

有关python比较函数的帮助,请参阅本文:

下面是我所说的示例函数:

def compare(f1, f2):
    is_same = True
    for line1, line2 in zip(f1, f2):
        if line1 != line2:
            is_same = False
    return is_same

files = request.FILES.getlist('a_bunch_of_posted_files') #get posted your files

same_files = True
for i in range (0,50):
    if i < 49:
        if not compare(files[i],files[i+1]:
            same_files = False
if(same_files)
    #then the files are all the same and you can just pick one to display 
    #or do whatever with
def比较(f1、f2):
这是真的吗
对于拉链中的第1行、第2行(f1、f2):
如果第1行!=第2行:
相同=错误
回报是一样的
files=request.files.getlist('a_bunch_posted_files')#发布您的文件
相同的文件=真
对于范围(0,50)内的i:
如果i<49:
如果不比较(文件[i],文件[i+1]:
相同的文件=错误
if(相同的_文件)
#然后文件都是相同的,您可以选择一个来显示
#或者用它做任何事

在方法表单\u valid中,您编写一个文件,对其进行比较,然后生成响应。但是我如何比较50多个文件?我的意思是,即使我使用此方法比较单个文件,我也需要对50多个文件重复此操作。这对单个文件有效,但随着要比较的文件数量的增加,方法的数量也会增加除非您有更好的建议,否则uld也需要增加。不,只需添加一个循环或递归方法,通过比较文件来工作。同样,循环文件上载表单和post请求也不起作用,因为我比较上载文件的文件的名称不同。递归循环对不同的文件无效文件名。有没有一个实现可以让我来支持你的声明?是的,它会的,不管文件名是什么。给我一点时间来写一个,这个函数告诉你我在说什么,它不是很有效,但是你可以只写一个比较函数,然后在所有文件上运行它,然后做什么一旦确定它们是否都相等,就可以使用该文件