2014-02-20 2 views
1

У меня есть сценарий для генерации файлов с помощью python, в некоторых случаях скрипт выполняется с помощью python из windows, а в других случаях - с питоном cygwinРазличия между файлами, сгенерированными с помощью python windows и python cygwin

текст из файлов одинаково, но если я использую difflib,

gen_file_data = open(gen_file) 
base_file_data = open(base_file) 
gen_file_content = gen_file_data.read().splitlines(True) 
base_file_content = base_file_data.read().splitlines(True) 
gen_file_data.close() 
base_file_data.close() 
diff = difflib.unified_diff(gen_file_content, base_file_content, n=0) 
diff = ''.join(diff) 

файлы различны.

И, если я использую md5, получаю различный хеш.

import hashlib 
base_md5 = hashlib.md5(base_file_content).hexdigest() 
gen_md5 = hashlib.md5(gen_file_content).hexdigest() 
print gen_md5, base_md5 

Если сравнивать файлы с kdiff3 я получаю

Files A and B have equal text, but are not binary equal. 

как я могу comparate текста diferences между двумя файлами ?, один генерироваться с питоном окон и других сгенерированных с питоном окон.

+3

Как вы думаете, это может быть конец строки? Windows использует '\ r \ n', тогда как unix (который эмулирует cygwin) использует '\ n' – user590028

+1

@ user590028 спасибо, я добавляю '.replace ('\ r \ n', '\ n')' для хранения содержимого, и это решить проблему. – JuanPablo

+0

@ пользователь590028 Вы можете оставить свой комментарий, как свой ответ. для закрытия вопроса. – JuanPablo

ответ

0

Проблема, скорее всего, кодирование конца строки. Windows использует '\ r \ n', тогда как unix (который эмулирует cygwin) использует '\ n'

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