Что подпроцесс эквивалентен из передачи “b” к OS popen2?

В Python 2.x, os.popen(command, "b") дает мне двоичный поток вывода данной команды. Это, прежде всего, важно в Windows, где двоичный файл и текстовые потоки на самом деле дают Вам различные байты.

subprocess модуль, как предполагается, заменяет os.popen и другие нерестящиеся API дочернего процесса. Однако документы преобразования не говорят о контакте с "b" режимом вообще. Как Вы получаете потоковое использование двоичного выхода subprocess?

1
задан Jean-Paul Calderone 12 August 2010 в 03:40
поделиться

1 ответ

По умолчанию, если вы не выполняете Popen (..., universal_newlines = True) .

class Popen(object):
    [...]
    def __init__(self, ...):
        [...]
        if p2cwrite is not None:
            self.stdin = os.fdopen(p2cwrite, 'wb', bufsize)
        if c2pread is not None:
            if universal_newlines:
                self.stdout = os.fdopen(c2pread, 'rU', bufsize)
            else:
                self.stdout = os.fdopen(c2pread, 'rb', bufsize)
        if errread is not None:
            if universal_newlines:
                self.stderr = os.fdopen(errread, 'rU', bufsize)
            else:
                self.stderr = os.fdopen(errread, 'rb', bufsize)
2
ответ дан 2 September 2019 в 22:15
поделиться
Другие вопросы по тегам:

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