Кодирование Python для pipe.communicate

Я звоню pipe.communicate из Python subprocess модуль из Python 2.6. Я получаю следующую ошибку из этого кода:

from subprocess import Popen

pipe = Popen(cwd)

pipe.communicate( data )

Для произвольного cwd, и где data это содержит unicode (конкретно 0xE9):

Exec. exception: 'ascii' codec can't encode character u'\xe9' in position 507: ordinal not in range(128)
Traceback (most recent call last):  

... stdout, stderr = pipe.communicate( data )

  File
"/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py",
line 671, in communicate
    return self._communicate(input)

  File
"/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py",
line 1177, in _communicate
    bytes_written = os.write(self.stdin.fileno(), chunk)

Это происходит, я предполагаю, потому что pipe.communicate() ожидает, что ASCII закодировал строку, но data unicode.

Это проблема, с которой я встречаюсь, и я sthere способ передать unicode pipe.communicate()?

Спасибо за чтение!

Brian

11
задан bignose 6 October 2015 в 08:16
поделиться

1 ответ

Я , возможно, решил эту проблему, изменив:

pipe.communicate( data )

на

pipe.communicate( data.encode('utf8') )

, хотя меня поправят!

Брайан

14
ответ дан 3 December 2019 в 08:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: