Найти - Пользователи
Полная версия: Модуль subprocess.py, проблема с кодировками
Начало » Python для экспертов » Модуль subprocess.py, проблема с кодировками
1
Все ники заняты
Добрый день!
Нужно выполнить консольную команду под 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' приведено только для примера).
poltergeist
cwd=u'c:\\temp\\Закачки'.encode('windows-1251')
Все ники заняты
Спасибо, работает!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB