Найти - Пользователи
Полная версия: subprocess.Popen не принимает кириллицу
Начало » Python для новичков » subprocess.Popen не принимает кириллицу
1
Игнат
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 - не помогает
Игнат
неужели никто не знает
или я задал неимоверно глупый вопрос?
Enchantner
Игнат
вроде в третьем питоне все строки и так по умолчанию в utf-8?
bw
А если через stdin передавать? Можно затем xargs использовать. Изврат конечно.

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

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

обратите внимание, что если делать подобное в интерактивном режиме питона - то все ок
проблема именно в апаче
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