複数の json ファイルを読み取り、リストを作成したい


次のようなファイルが大量にあります。

#001.json

[code]

    {
        "id": 1,
        "name": "hoge"
    }
    
[/code]

#002.json

[code]

    {
        "id": 2,
        "name": "fuga"
    }
    
[/code]

これらを読み込み、次のようなオブジェクトを作りたいです。

[code]

    [
        {
            "id": 1,
            "name": "hoge"
        },
        {
            "id": 2,
            "name": "fuga"
        }
    ]
    
[/code]

for ループで append していくことで一応達成してはいるのですが、これを簡単に行う方法はありますか

[code]

    files = glob.glob(dir+'*.json')
    print(list(files))
    
    data = []
    for file in files:
        with open(file, 'r') as f:
            data.append(json.load(f))
    print(list(data))
    
[/code]




more_itertools の [with_iter() メソッド](https://more-
itertools.readthedocs.io/en/stable/api.html#more_itertools.with_iter)
を使うと以下の様に書くことができます。

[code]

    import glob
    import json
    from more_itertools import with_iter
    
    dir = './'
    data = [
      json.loads(''.join(list(with_iter(open(f)))))
      for f in sorted(glob.glob(dir+'*.json'))
    ]
    
[/code]

**[with_iter() source code](https://more-
itertools.readthedocs.io/en/stable/_modules/more_itertools/more.html#with_iter)**

[code]

    def with_iter(context_manager):
        """Wrap an iterable in a ``with`` statement, so it closes once exhausted.
        For example, this will close the file when the iterator is exhausted::
            upper_lines = (line.upper() for line in with_iter(open('foo')))
        Any context manager which returns an iterable is a candidate for
        ``with_iter``.
        """
        with context_manager as iterable:
            yield from iterable
    
[/code]

**註**  
コメント欄にも書きましたが、`with_iter()` を使っているのは list comprehension
で解決するためです。質問の意図を考えてみれば、その様な必要性はありませんし、質問者である v..snow
さんが最初に書かれたコードが最も確実で簡単であるかと思います。

