2011-06-17 137 views
0

如何比较说,如果file1中的内容存在于文件2其他格式,我们如何可以检测到它蟒蛇得到文件

防爆两个文件的内容差异:文件1

 import datetime,os 
     #include<stdio.h> 
     import java.io.*; 
     import mymodule,urllib, 
     #include<conio.h> 

文件2:

 #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

,因为文件2不具有datetime和OS进口的,你会希望它失败? – 2011-06-17 05:20:28

+0

,因为它会在一个while循环,我想它可能只是打印没有找到 – Rajeev 2011-06-17 05:23:51

+0

这就是我的意思是“失败”,谢谢 – 2011-06-17 05:24:40

回答

2

这很不平凡。我只是为了匹配注释和导入而创建一个小脚本,但即使这样也需要很多“智能”的正则表达式解析数据。导入语句可以在多行中运行,并且您必须以逗号分隔所有这些行,将str.strip映射到结果列表,然后比较这些集。这甚至不包括诸如“从foo导入栏”或“导入foo.bar”之类的东西。

而'import mymodule,urllib'会导致Python发声。如果你打算用Python的内置知识进行比较,它们必须是有效的 Python或结果将是不确定的。

这里是证明了概念的想法,只是比较进口:

[email protected]:/tmp$ cat t1.py 
import sys, os, re 
[email protected]:/tmp$ cat t2.py 
import os, sys, re, csv 
[email protected]:/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)) 
[email protected]:/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 
+0

我试图做这些好几天了..我刚刚教会在这里提出一个问题有些或其他方式是可能的.. – Rajeev 2011-06-17 05:50:46

+0

这是可能的。这只是一大堆工作。 – 2011-06-17 05:57:06

+0

也不会有只有导入语句在这两个文件中包括语句也正确..任何方式感谢这 – Rajeev 2011-06-17 06:27:34