@wintreist

Как декодировать символы?

Использую CmdRar, получаю вывод в bytes, но не могу декодировать их нормально:
import subprocess as sub
rar = sub.Popen('"C:\\Program Files\\WinRAR\\Rar.exe" a -r -ep1 -v1g "E:\\test" "D:\games\testgame"',
               shell=True, stdout=sub.PIPE)
while True:
    output = rar.stdout.readline()
    if output == b'' and rar.poll() is not None:
        break
    if output:
        with open('test.log', 'a') as file:
            file.write(output.strip().decode("cp1251") + "\n")
            print(output.strip().decode("cp1251"))

Как видно, я уже декодирую байты из кодировки "WINDOWS-1251", но в файл записывается такое:
Спойлер 1
RAR 5.91 x64    Ђўв®абЄЁҐ Їа ў  (c) 1993-2020 Ђ«ҐЄб ­¤а ђ®и «    25 Ёо­ 2020
Џа®Ў­ п ўҐабЁп (­ ЎҐаЁвҐ RAR -? ¤«п ўлў®¤  бЇа ўЄЁ)

ЌҐ§ аҐЈЁбваЁа®ў ­­ п Є®ЇЁп. Џ®¦ «г©бв , § аҐЈЁбваЁаг©вҐбм.

‘®§¤ ­ЁҐ  аеЁў  E:\test.rar

„®Ў ў«Ґ­ЁҐ D:\games\Love.Money.Rock.n.Roll.RePack.by.Chovka\Data.RePack       0%  1%  2%  3%  4%  5%  6%  7%  8%  9% 10% 11% 12% 13% 14% 15% 16% 17% 18% 19% 20% 21%

‘®§¤ ­ЁҐ  аеЁў  E:\test.part2.rar

...       Love.Money.Rock.n.Roll.RePack.by.Chovka\Data.RePack             22% 23% 24% 25% 26% 27% 28% 29% 30% 31% 32% 33% 34% 35% 36% 37% 38% 39% 40% 41% 42% 43%

‘®§¤ ­ЁҐ  аеЁў  E:\test.part3.rar

...       Love.Money.Rock.n.Roll.RePack.by.Chovka\Data.RePack             44% 45% 46% 47%  OK
„®Ў ў«Ґ­ЁҐ D:\games\Love.Money.Rock.n.Roll.RePack.by.Chovka\Love Money Rock n Roll\baselib.dll      47%  OK
„®Ў ў«Ґ­ЁҐ D:\games\Love.Money.Rock.n.Roll.RePack.by.Chovka\Love Money Rock n Roll\GameAssembly.dll      47% 48%  OK

И если этот текст засунуть в универсальный декодер, тот +\- декодирует
Спойлер 2
RAR 5.91 x64    Авторские права (c) 1993-2020 Александр Рошал    25 июн 2020
Пробная версия (наберите RAR -? для вывода справки)

Незарегистрированная копия. Пожалуйста, зарегистрируйтесь.

Создание архива E:\test.rar

Добавление D:\games\Love.Money.Rock.n.Roll.RePack.by.Chovka ta.RePack       0%  1%  2%  3%  4%  5%  6%  7%  8%  9% 10% 11% 12% 13% 14% 15% 16% 17% 18% 19% 20% 21%

Создание архива E:\test.part2.rar

...       Love.Money.Rock.n.Roll.RePack.by.Chovka ta.RePack             22% 23% 24% 25% 26% 27% 28% 29% 30% 31% 32% 33% 34% 35% 36% 37% 38% 39% 40% 41% 42% 43%

Создание архива E:\test.part3.rar

Вот, собственно в чем вопрос, как в коде декодировать из спойлера 1 в спойлер 2, и что делать с этим: "" символом, который в виде байта выглядит: "\x08"?
P.S: На этапе предпросмотра обнаружил что предпросмотр не видит символ, оставлю
скриншот
35IKdYU.png
  • Вопрос задан
  • 238 просмотров
Решения вопроса 1
@humoured
Вы всё на свете найдёте в коробке с карандашами
что делать с этим: "" символом, который в виде байта выглядит: "\x08"?
Нужно обрабатывать, как оно и задумывалось. Символ 0x08Backspace, с помощью него консольные приложения обновляют данные, которые сами же в консоль и отправили.

В конкретно этом примере мы видим, что процесс работы приложения отображается четырьмя символами: _25% — пробел, две цифры, символ процента. Затем идет четыре символа Backspace ("стирание" предыдущего символа) и четыре символа обновлённого статуса (_26%).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы