2014-02-13 9 views
-6

Я новичок в Python. Я хочу сравнить два файла (a.txt и b.txt) и записать разницу в третий файл c.txt.Как сравнить два файла в Python?

Содержание a.txt:

77.67.33.100 46.38.237.116 74.86.24.19 212.83.158.5 46.149.28.96 144.76.126.179 81.89.96.89 144.76.126.180 81.89.96.90 171.25.193.21 31.172.31.207 

, которая является одной линии с отдельными строками, разделенными пространством

Содержание b.txt:

171.25.193.21 46.38.237.116 31.172.31.207 85.25.203.42 77.67.33.100 74.86.24.19 212.83.158.5 46.149.28.97 

мне нужен выход, как это в c.txt:

85.25.203.42 46.149.28.97 

означает, что каждая строка в b.txt, разделенная пробелом, должна сравниваться с каждой строкой в ​​файле a.txt. Только те строки нет в a.txt должны быть записаны в c.txt

+3

Вы должны показать нам, что вы уже пробовали. – henrebotha

ответ

0
a = open('a.txt').read().split() 
b = open('b.txt').read().split() 
c = [x for x in b if x not in a] 
open('c.txt', 'wt').write(' '.join(c)+'\n') 
+0

спасибо jonas, он работает, пожалуйста, предложите какую-нибудь книгу для программирования в python. – user3304696

+0

Я могу согласиться только с предложением @ henrebotha: [Dive Into Python] (http://www.diveintopython.net/). Вот где я начал, и я нашел как сам язык, так и учебники превосходными. –

2
def read_file(fname): 
    with open(fname) as inf: 
     return [s for row in inf for s in row.split()] 

def write_file(fname, items): 
    with open(fname, "w") as outf: 
     outf.write(" ".join(items)) 

def main(): 
    a_items = set(read_file("a.txt")) 
    b_items = set(read_file("b.txt")) 
    c_items = b_items - a_items 
    write_file("c.txt", c_items) 

if __name__=="__main__": 
    main() 
+0

спасибо, что он работает, пожалуйста, предложите какую-нибудь книгу для программирования на python – user3304696

+0

http://www.diveintopython.net/ – henrebotha

Смежные вопросы