Как вывести выведенный текст в отдельный файл? python3 - PullRequest
0 голосов
/ 14 сентября 2018

, поэтому я пытаюсь создать бота, который отправляет сообщение после сравнения двух текстовых файлов (которые генерируются с использованием метода requests.get('url=').text), отображая только новые строки / текст / в зависимости от того, что было добавлено / удалено.

Я знаю, что есть difflib.HtmlDiff(make_file()) меня не устраивает, потому что он просто создает беспорядок в файле.Плюс нужно только вывести html файл, насколько я понимаю.Затем вы открываете его в браузере и Wuala!У вас есть сравнения.

Я попытался найти, но не могу найти такую ​​библиотеку, которая выводит только текст, который был изменен / добавлен.

В настоящее время я сделал это:

def htmlCompare(prep_id=None):
while True:
    prep_url = requests.get(prep_template.format(prep_id))
    c1 = prep_url
    c2 = ''
    if c2 != c1:
        compare = difflib.HtmlDiff().make_file(fromlines=c1, tolines=c2, numlines=1)
        c2 = c1
        config_compare_save = open('compare_{}_main.txt'.format(prep_id), 'w')
        config_compare_save.write(compare)
        config_compare_save.close()
    else:  # don't mind this meaningless condition for now, I left this for something for later :)
        time.sleep(10)

но это, как вы можете сказать, не дает мне нужного результата.Пытался использовать Differ(), но, похоже, я не знаю, как его использовать.Даже не уверен, что этот метод мне нужен в первую очередь.Но из того, что я могу сказать, это самое близкое к тому, что мне, возможно, придется использовать.

1 Ответ

0 голосов
/ 14 сентября 2018

Вопрос : Пытался использовать Differ (), ... из того, что я могу сказать, это наиболее близко к тому, что мне, возможно, придется использовать.

Примечание : только первая строка ..._data равна равна !

import difflib

_old_data = "refno,title,author,year,price\n\
1001,CPP,MILTON,2008,456\n\
1002,JAVA,Gilson,2002,456\n\
1003,Adobe Flex,,2010,566\n\
1004,General Knowledge,Sinson,2007,465\n\
1005,Actionscript,Gilto,2008,480\n".splitlines(keepends=False)

_new_data = "refno,title,author,year,price\n\
1001,CPP,MILTON,2010,456,2008\n\
1002,JAVA,Gilson,2002\n\
1003,Adobe Flexi,Johnson,2010,566\n\
1004,General Knowledge,Simpson,2007,465\n\
105,Action script,Gilto,2008,480\n\
2000,Drama,DayoNe,,2020,560\n".splitlines(keepends=False)

diff = difflib.Differ()

for line in diff.compare(_old_data, _new_data):
    if line.startswith(('?',' ')):
        # Skip diff control lines ?
        # Skip equal lines ' '
        pass
    else:
        #print(line[2:])
        print(line)

Qutput
- 1001, CPP, MILTON, 2008,456
+ 1001, CPP, MILTON, 2010 456 2008
- 1002, JAVA, Gilson, 2002, 456
. + 1002, JAVA, Gilson, 2002
- 1003, Adobe Flex ,, 2010,566
+ 1003, Adobe Flexi, Johnson, 2010, 566
- 1004, Общие знания, Синсон, 2007, 465
+ 1004, Общие знания, Симпсон, 2007, 465
- 1005, Actionscript, Gilto, 2008,480
+ 105, боевик, Gilto, 2008,480
+ 2000, Драма, DayoNe ,, 2020,560

Протестировано на Python: 3.4.2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...