Я пытаюсь вызвать скрипт оболочки в python, но он продолжает сообщать об ошибке поврежденного канала (результат в порядке, но я не хочу видеть сообщение об ошибке в STDERR). Я точно определили причину, и она может быть воспроизведена в следующем фрагменте:Python: subprocess.call broken pipe
subprocess.call('cat /dev/zero | head -c 10 | base64', shell=True)
AAAAAAAAAAAAAA ==
кошки: написать об ошибке: Broken трубы
/dev/zero
бесконечный поток, но head -c 10
только считывает 10 байтов из него и выходит, тогда кошка получит SIGPIPE из-за того, что сверстник закрыл трубу. Когда я запускаю команду в оболочке, нет сообщения об ошибке сбойной трубы, но почему это показывает python?
ошибка уходит, когда вы пропустите [uuoc] (https://en.wikipedia.org/wiki/ Cat_% 28Unix% 29 # Useless_use_of_cat): 'subprocess.call ('head -c 10 dev/zero | base64', shell = True)' –
@larsmans: вы можете поставить это как ответ –
@ChrisMorgan: Я предпочитаю ваш ответ. –