在Python 2.x中,os.popen(command, "b")
为我提供了给定命令输出的二进制流。这在Windows上非常重要,其中二进制和文本流实际上为您提供不同的字节。
subprocess
模块应该替换os.popen
和其他子进程生成API。但是,转换文档根本没有讨论处理“b”模式。如何使用subprocess
获得二进制输出流?
答案 0 :(得分: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)