2013-03-13 2 views
0

У меня есть исходный файл с содержимым, которое необходимо добавить в файл назначения после проверки того, что все строки в исходном файле (в виде группы) еще не указаны в целевом файле.Условно добавление содержимого файла

Если он уже найден в файле назначения, я не должен снова добавлять его, поскольку это дублирует содержимое в целевом файле.

Это по существу сравнение блоков линий в целом. Есть ли способ сделать это в python без использования регулярных выражений?

+0

Почему вы думаете, что вы должны использовать регулярные выражения? Загрузите содержимое файлов в виде строк и попробуйте найти первую строку во второй. – khachik

+0

ya.you r справа. Спасибо, что показал мне более простой способ. –

ответ

2
src = open('source').read() 
if src not in open('dest').read(): 
    with open('dest', 'a') as dst: 
     dst.write(src) 
+0

Большое спасибо –

0

Если вы можете загрузить весь файл в память в виде одной строки, то вы можете просто использовать count:

import os 

f = open("the_file_name", 'r+') 
s1 = "the block of text\nwith newlines!\nyou will search in the file" 
s2 = f.read() # s2 now has the whole file 
if s2.count(s1) > 0: 
    # seek to end and append s1 
    f.seek(0, os.SEEK_END) 
    f.write(s1) 
+0

Привет, я попробовал ваш метод. Он выдает файл ошибки «IOError: файл не открыт для записи». Пожалуйста, помогите –

+0

Да, я забыл режим. Добавлено, только ради этого. – fog

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