Мы занимаемся очисткой кода. Очистка касается только форматирования (если проблема, то давайте даже предположим, что номера строк не меняются, хотя в идеале я хотел бы также игнорировать изменения номеров строк)
Чтобы быть уверенным, что нет случайного изменения кода, я хотел бы найти простой/быстрый способ сравнить два исходных кода.
Итак, предположим, что у меня есть file1.py
и file2.py
что работает, так это использовать py_compile.compile(filename)
для создания файлов .pyc, а затем использовать uncompyle6 pycfile
, затем удалить комментарии и сравнить результаты, но это излишне и очень медленно.
Другой подход, который я придумал, - это скопировать file1.py
, например, в file.py
, использовать py_compile.compile("file.py")
и сохранить файл .pyc.
затем скопируйте file2.py
, например, в file.py
и используйте py_compile.compile("file.py")
, сохраните файл .pyc и, наконец, сравните оба сгенерированных файла .pyc.
Будет ли это надежно работать со всеми (текущими) версиями ›= python 3.6
Насколько я помню, по крайней мере, для python2 файлы pyc могут содержать метки времени или абсолютные пути, что может привести к сбою сравнения. (по крайней мере, если генерация файла pyc выполнялась на двух разных машинах)
Есть ли чистый способ сравнить байтовый код файлов py2?
В качестве бонусной функции (если возможно) я хотел бы создать хэш для каждого байтового кода, который я мог бы сохранить для дальнейшего использования.