如何比较两个文件的内容,说明file1中的内容是否以其他格式存在于file2中我们如何检测它
例如:文件1
import datetime,os
#include<stdio.h>
import java.io.*;
import mymodule,urllib,
#include<conio.h>
File2:
#include<stdio.h>
import java.io.*;
import mymodule,logging,random,traceback,urllib,os
#include<conio.h>
f = open('workfile','r+')
f.read()
f1 = open('workfile1','r+')
f1.read()
if(contents of file present in file2):
{
print found
}
else:
{
print not found
}
答案 0 :(得分:4)
您可以查看difflib - http://docs.python.org/library/difflib.html
段:
difflib.SequenceMatcher(None, file1.read(), file2.read())
答案 1 :(得分:2)
这非常重要。我打算用一个小脚本来匹配注释和导入,但即使这样也需要大量的“智能”正则表达式解析数据。导入语句可以运行到几行,您必须在逗号上拆分所有这些行,将str.strip映射到结果列表,然后比较这些集。这甚至不算'来自foo import bar'或'import foo.bar'。
并且'import mymodule,urllib'这一行会导致Python崩溃。如果您要将内容与Python的内容相比较,那么它们必须是有效的 Python,否则结果将是不确定的。
这是一个仅仅比较进口的概念验证理念:
jcomeau@intrepid:/tmp$ cat t1.py
import sys, os, re
jcomeau@intrepid:/tmp$ cat t2.py
import os, sys, re, csv
jcomeau@intrepid:/tmp$ cat compare.py
class t1:
from t1 import *
class t2:
from t2 import *
print 't1', dir(t1)
print 't2', dir(t2)
print set(dir(t1)) & set(dir(t2)) == set(dir(t1))
jcomeau@intrepid:/tmp$ python compare.py
compare.py:1: SyntaxWarning: import * only allowed at module level
class t1:
compare.py:3: SyntaxWarning: import * only allowed at module level
class t2:
t1 ['__doc__', '__module__', 'os', 're', 'sys']
t2 ['__doc__', '__module__', 'csv', 'os', 're', 'sys']
True