Уведомления

Группа в Telegram: @pythonsu

#1 Май 14, 2008 20:18:42

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

Модуль subprocess.py, проблема с кодировками

Добрый день!
Нужно выполнить консольную команду под Windows и прочитать её вывод.
Есть вот такой код (не работает):

# -*- coding: utf-8 -*-
import codecs, sys
import subprocess
sys.stdout = codecs.getwriter('cp866')(sys.stdout, errors='replace')
stdOutErr = subprocess.Popen(['cmd', 'cmd', '/C', 'dir'],
    stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=u'c:\\temp\\Закачки').stdout
for line in stdOutErr: print unicode(line, 'cp866').rstrip()
Выдаёт “UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 8-14: ordinal not in range(128)” в модуле “subprocess.py”. Дело только в русских именах каталогов, т.к. иначе всё работает.
Если в качестве текущего каталога указать просто строку (не unicode), выдаёт "WindowsError: " в том же модуле.
Вопрос: как сделать правильно?
Кроме того, русские имена могут быть и в самой команде ('dir' приведено только для примера).



Офлайн

#2 Май 14, 2008 20:58:40

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

Модуль subprocess.py, проблема с кодировками

cwd=u'c:\\temp\\Закачки'.encode('windows-1251')



Офлайн

#3 Май 14, 2008 21:17:19

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

Модуль subprocess.py, проблема с кодировками

Спасибо, работает!



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version