Сравнение некоторых данных файла с другим файлом в python

У меня есть файл f1, который содержит некоторый текст, скажем, «Все хорошо». В другом файле f2 у меня может быть 100 строк, и одна из них «Все хорошо».

Теперь я хочу посмотреть, содержит ли файл f2 содержимое файла f1.

Буду признателен, если кто-то придет с решением.

Спасибо


person Sara    schedule 13.08.2012    source источник
comment
Что вы пробовали?   -  person Some programmer dude    schedule 13.08.2012
comment
Предоставьте свой код и объясните, в чем ваша проблема? Мы не делаем домашнее задание за вас.   -  person Andreas Jung    schedule 13.08.2012


Ответы (4)


with open("f1") as f1,open("f2") as f2:
    if f1.read().strip() in f2.read():
         print 'found'

Изменить: поскольку python 2.6 не поддерживает несколько менеджеров контекста в одной строке:

with open("f1") as f1:
    with open("f2") as f2:
       if f1.read().strip() in f2.read():
             print 'found'
person Ashwini Chaudhary    schedule 13.08.2012
comment
не могли бы вы дать положительную оценку моему вопросу, я был бы очень признателен :), вопрос можно найти здесь stackoverflow.com/questions/12138298/ - person Sara; 27.08.2012
comment
Как обнаружила Сара, это работает только в Python 2.7; в Python 2.6 вы должны вкладывать операторы with, так как несколько менеджеров контекста в одной строке еще не поддерживаются. - person Martijn Pieters; 27.08.2012

with open(r'path1','r') as f1, open(r'path2','r') as f2:
    t1 = f1.read()
    t2 = f2.read()
    if t1 in t2:
        print "found"

Использование других методов не сработает, если внутри строки, которую вы хотите найти, есть '\n'.

person zenpoy    schedule 13.08.2012

fileOne = f1.readlines()
fileTwo = f2.readlines()

теперь fileOne и fileTwo это список строк в файлах, теперь просто проверьте

if set(fileOne) <= set(fileTwo):
    print "file1 is in file2"
person NIlesh Sharma    schedule 13.08.2012

person    schedule
comment
если строка должна быть абсолютно такой же, вы можете использовать template == i - person pod2metra; 13.08.2012
comment
просто стилистическое замечание: используйте i вместо integers. здесь s или l, вероятно, больше подходят. - person Theodros Zelleke; 13.08.2012