2011-06-17 136 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