|
6 / 6 / 2
Регистрация: 02.06.2009
Сообщений: 99
|
|||||||||||||||||||||
Кодировка stdout при работе с subprocess.Popen23.11.2016, 16:33. Показов 18758. Ответов 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
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|