Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 2, 2011 13:02:06

Игнат
От:
Зарегистрирован: 2010-10-02
Сообщения: 224
Репутация: +  0  -
Профиль   Отправить e-mail  

subprocess.Popen не принимает кириллицу

python 3.2, linux

запускаю питон в консоли, выполняю

subprocess.Popen('grep "тест" log.txt', shell=True,stdout=subprocess.PIPE, stdin=subprocess.PIPE)
всё работает

запускаю скрипт как cgi через apache и получаю
as_hlp.py", line 206, in execute stdout=device, stdin=subprocess.PIPE) File "/usr/local/lib/python3.2/subprocess.py", line 736, in __init__ restore_signals, start_new_session) File "/usr/local/lib/python3.2/subprocess.py", line 1175, in _execute_child restore_signals, start_new_session, preexec_fn) UnicodeEncodeError: 'ascii' codec can't encode characters in position 26-28: ordinal not in range(128)
вообще, если я пытаюсь вывести принтом кириллицу на страницу, ошибки такие же
тогда я делаю так:

def _print(text):
sys.stdout.buffer.write(text.encode('utf8'))
sys.stdout.flush()
но subprocess.Popen не принимает байты
если ему их передать, отвечает:
line 1175, in _execute_child restore_signals, start_new_session, preexec_fn) TypeError: Can't convert 'int' object to str implicitly
Что делать? Я не понимаю как тогда передать ему правильный утф-8 с кириллицей?
Пробовал декодировать и потом снова енкодировать в утф-8 - не помогает



Офлайн

#2 Сен. 3, 2011 17:43:20

Игнат
От:
Зарегистрирован: 2010-10-02
Сообщения: 224
Репутация: +  0  -
Профиль   Отправить e-mail  

subprocess.Popen не принимает кириллицу

неужели никто не знает
или я задал неимоверно глупый вопрос?



Офлайн

#3 Сен. 3, 2011 20:00:49

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

subprocess.Popen не принимает кириллицу

Игнат
вроде в третьем питоне все строки и так по умолчанию в utf-8?



Офлайн

#4 Сен. 3, 2011 20:31:28

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

subprocess.Popen не принимает кириллицу

А если через stdin передавать? Можно затем xargs использовать. Изврат конечно.

..bw



Офлайн

#5 Сен. 4, 2011 08:19:21

Игнат
От:
Зарегистрирован: 2010-10-02
Сообщения: 224
Репутация: +  0  -
Профиль   Отправить e-mail  

subprocess.Popen не принимает кириллицу

>>вроде в третьем питоне все строки и так по умолчанию в utf-8?
да, только ошибка от этого не пропадает

>>А если через stdin передавать? Можно затем xargs использовать. Изврат конечно.
можно поподробнее? не очень понимаю о чем речь

обратите внимание, что если делать подобное в интерактивном режиме питона - то все ок
проблема именно в апаче



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version