Я хотел бы сделать что-то вроде этого:
data = json.load(open(sys.argv[1]) if len(sys.argv) > 1 else sys.stdin)
, который в этом примере может быть уменьшен до
data = json.load(sys.stdin)
Но json.load
запускает один .read()
, который может не содержать всю строку JSON, которую я предоставил через
generate_json_output | myprogram.py
Есть ли рекомендуемый способ чтения с stdin
до завершения generate_json_output
? Я пытался поймать BrokenPipeError
, но он не поднимается при запуске
while True:
data += sys.stdin.read()