#python #stream #subprocess #popen #buffering
#python #поток #подпроцесс #popen #буферизация
Вопрос:
Мне нужно настроить stderr
поток в Popen
вызове с буферизацией строки. Я обнаружил bufsize
аргумент, но в нем не указано, к какому из 3 файлов ( stdin
, stdout
, stderr
) он на самом деле применяется.
- Какой файл изменяет
bufsize
аргумент? - Как мне изменить другие режимы буферизации файлов?
Ответ №1:
Используй исходный код, Luke 🙂 /usr/lib/python2.7/subprocess.py
:
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)
Похоже, что он использует bufsize
во всех из них, нет возможности уточнить.