Python 如何比较Django中的两个文本文件?
我正在Django建立一个在线法官系统,就像我们之前在Kickstart中使用的那样 他们给了你一个文本文件,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
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请求也不起作用,因为我比较上载文件的文件的名称不同。递归循环对不同的文件无效文件名。有没有一个实现可以让我来支持你的声明?是的,它会的,不管文件名是什么。给我一点时间来写一个,这个函数告诉你我在说什么,它不是很有效,但是你可以只写一个比较函数,然后在所有文件上运行它,然后做什么一旦确定它们是否都相等,就可以使用该文件