|
6 / 6 / 2
Регистрация: 02.06.2009
Сообщений: 99
|
|||||||||||||||||||||
Кодировка stdout при работе с subprocess.Popen23.11.2016, 16:33. Показов 18768. Ответов 3
Метки нет (Все метки)
У меня Виндоус, а следовательно кодировка комманд, выполняемых в cmd определяется локалью же, да?! Ну короче это cp1251. А вот кодировка python-ской консоли UTF-8 (скорее всего, весьма вероятно, так оно и есть).
Так вот. Все бы ничего, но понадобилось мне выполнить из питонки команду:
Help me please ![]() Добавлено через 1 час 57 минут Покопал я значит сам Гуглы, по запускал разные варианты кода и выяснил, что мои бараны начинаются с IOBase. А уже где-то на уровне TextIOWrapper ударяются в Да, когда я конструктору Popen скармливаю параметр universal_newlines=True, то возвращает он мне по вызову stdout экземпляр TextIOWrapper (ну а иначе как мне с трубой работать). А знаете, что это значит? - Оказывается, это значит (ну как я понял), что интерпретатор берет строку байт и декодирует ее автоматом под локаль системную. А еще это значит, что если параметр universal_newlines сделать False, то вернет интерпретатор мне IOBufferedReader, над которым потом Wraper и наворачивается. Так, а почему бы собственно не попробовать тогда сделать это вручную??? Пробую, и опять мажу:
<_io.TextIOWrapper name=3 encoding='utf8'> Traceback (most recent call last): File "D:/ProgrammingNI/workingDir/DaCIdA/checks_2.py", line 9, in <module> s = my_out.readline() File "C:\Program Files\Anaconda3\lib\codecs.py", line 321, in decode (result, consumed) = self._buffer_decode(data, self.errors, final) UnicodeDecodeError: 'utf-8' codec can't decode byte 0x88 in position 2: invalid start byte Стоит мне поставить ручками ту же кодировку, что ставит интрепретатор автоматом, при использование параметра universal_newlines=True:
<_io.TextIOWrapper name=3 encoding='cp1251'> €¬п_б«г¦Ўл: AdobeARMservice ‚лў®¤Ё¬®Ґ_Ё¬п: Adobe Acrobat Update Service ’ЁЇ : 10 WIN32_OWN_PROCESS ‘®бв®п*ЁҐ : 4 RUNNING (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) ... Ну плизики, NEED YOUR HELP ![]() Добавлено через 50 минут Парни, помогите, трахаюсь с кодировкой черт знает сколько. Вчера setlocale пробовал, и encode, и чот ваще не, потом вот, то что выше писал... Гугл внятного ответа не дает (ну либо я криворукий).
0
|
|||||||||||||||||||||
| 23.11.2016, 16:33 | |
|
Ответы с готовыми решениями:
3
Как под Windows прокинуть файловые дескрипторы через os.system или subprocess.Popen ? Как заставить subprocess.run(stdout=io.BytesIO() работать? |
|
757 / 306 / 190
Регистрация: 20.05.2016
Сообщений: 593
|
|||||||||||
| 23.11.2016, 16:52 | |||||||||||
|
cmd выдаёт текст в кодировке - cp866, посему
1
|
|||||||||||
|
6 / 6 / 2
Регистрация: 02.06.2009
Сообщений: 99
|
||||||
| 24.11.2016, 12:19 [ТС] | ||||||
|
Спасибо вам большое. Я совсем забыл про такую вещь, как cp866. Динозавр, перекочевавший к нас со времен псевдографики...
Раз уж написал на форум, то почему бы не задать еще вопрос... Я вот пытался список служб всех получить с их состояниями и прочей инфой о них. Решил, что запущу процесс CLI из Python-а, но были, в принципе, и другие варианты, например, попробовать заюзать какую-нибудь pywin32 (в ней пакет service utils)... В итоге имею, то, что имею. Список всех служб я получил, все ок. Но может есть и другие варианты.
0
|
||||||
|
6 / 6 / 2
Регистрация: 02.06.2009
Сообщений: 99
|
||||||
| 24.11.2016, 12:33 [ТС] | ||||||
|
И ещё есть вот такая ошибка на компе моего знакомого. Хотя у меня все работает.
Вот код:
0
|
||||||
| 24.11.2016, 12:33 | |
|
Помогаю со студенческими работами здесь
4
Неправильная кодировка при работе с MSSQL Lazarus и кодировка при работе с WinAPI Кодировка в консоли при работе с jdbc. Windows 10
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|