[Python] How I can I lazily read multiple JSON values from a file/stream in Python?

Discussão em 'Python' iniciado por Stack, Maio 2, 2025.

  1. Stack

    Stack Membro Participativo

    I'd like to read multiple JSON objects from a file/stream in Python, one at a time. Unfortunately json.load() just .read()s until end-of-file; there doesn't seem to be any way to use it to read a single object or to lazily iterate over the objects.

    Is there any way to do this? Using the standard library would be ideal, but if there's a third-party library I'd use that instead.

    At the moment I'm putting each object on a separate line and using json.loads(f.readline()), but I would really prefer not to need to do this.

    Example Use

    example.py


    import my_json as json
    import sys

    for o in json.iterload(sys.stdin):
    print("Working on a", type(o))

    in.txt


    {"foo": ["bar", "baz"]} 1 2 [] 4 5 6

    example session


    $ python3.2 example.py < in.txt
    Working on a dict
    Working on a int
    Working on a int
    Working on a list
    Working on a int
    Working on a int
    Working on a int

    Continue reading...

Compartilhe esta Página