2015-08-30 4 views
1

Мне нужно написать модуль в python, который получает вывод команды unix diff -u и один из файлов, которые были использованы для создания этого вывода и в результате выводят второй файл.Обратный diff -u в python

дифф -u возвращает файл различий в унифицированном формате

Может кто-нибудь объяснить мне действительно мотыгой, чтобы понять, что единый формат?

+0

Вы можете увидеть [здесь ] (http://www.gnu.org/software/diffutils/manual/html_node/Unified-Format.html#Unified-Format) также есть пример из документации GNU –

+0

И вы не можете использовать 'patch', потому что ...? – tripleee

+0

Потому что это упражнение, и мне нужно сделать это самостоятельно –

ответ

0

Там в python port из diff-match-patch библиотеки Google:

Установите его с пип:

pip install diff-match-patch 

Пример применения патча из питона переводчика:

>>> from diff_match_patch import diff_match_patch 
>>> old_version = '''# 
... # Mac OS X Notice 
... # 
... # This file is not used by the host name and address resolution 
... # or the DNS query routing mechanisms used by most processes on 
... # this Mac OS X system. 
... # 
... # This file is automatically generated. 
... # 
... nameserver 192.168.1.1 
... nameserver 8.8.8.8''' 
>>> patch='''@@ -8,4 +8,4 @@ 
... # This file is automatically generated. 
... # 
... nameserver 192.168.1.1 
... -nameserver 8.8.8.8 
... +nameserver 8.8.4.4''' 
>>> patchobj = diff_match_patch() 
>>> patches = patchobj.patch_fromText(patch) 
>>> patched_version, results = patchobj.patch_apply(patches, old_version) 
>>> print str(patched_version) 
# 
# Mac OS X Notice 
# 
# This file is not used by the host name and address resolution 
# or the DNS query routing mechanisms used by most processes on 
# this Mac OS X system. 
# 
# This file is automatically generated. 
# 
nameserver 192.168.1.1 
nameserver 8.8.4.4 
+0

Это не совсем патч, который я делаю. Мне нужно получить любой из файлов diff и извлечь другой. Будет ли этот код работать в обоих направлениях? –

+0

Думаю, у меня нет хорошего понимания того, чего вы хотите достичь. Вам придется публиковать точные примеры того, что вы ищете, поскольку объяснений недостаточно. –

+0

Я понял. В принципе: мы создаем файл diff с diff -u file_a и file_b. Затем мы предоставляем программу файл diff и файл a или b, а взамен получаем другой в качестве вывода –

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

  • Нет связанных вопросов^_^