Не полный ответ, но лучший / правильный способ получить версию:
curl -s https://api.github.com/repos/notepadqq/notepadqq/releases |
jq -r '[ .[] | select(.tag_name | contains("v")) | .tag_name][0]'
v1.4.0
Не анализировать JSON с grep | tr и т.д ... Используйте правильный парсер: jq
Откройте файл в режиме двоичного счета:
open("icon.png", "rb")
Я не очень знаком с Windows, но я вообразил бы то, что происходит, то, что файл содержит символ (0x1A), что Windows интерпретирует как конец файла (по причинам прежней версии), когда он открыт в текстовом режиме. Другая проблема - то, что открытие файла в текстовом режиме (без 'b') в Windows заставит окончания строки быть переписанными, который будет обычно повреждать двоичные файлы, где те символы на самом деле не указывают на конец строки.
Для увеличения ответа от Miles первые восемь байтов в файле PNG особенно разработаны:
Ваш код останавливается в 1a, как разработано.