Каков эквивалент подпроцесса передачи «b» в os.popen2?

1

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

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

Теги:
subprocess

1 ответ

2
Лучший ответ

Это по умолчанию, если вы не делаете 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)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню