51768


pythonでjsonファイルを読み込みたいのですが、複数のファイルを読み込む方法がわかりません。

読み込みたいファイルが  
`right_000000000000_keypoints.json`から  
`right_000000000100_keypoints.json`まであるとしたら、  
どのようにプログラムを組めばよろしいでしょうか。

for文と`str()`を使うというのを聞いたことがあるのですが、上手くいきません。  
一応自分なりに考えたプログラムを貼っておきます。

[code]

    import json
    
    i = 000000000000
    
    for i in range(100):
        # ファイルを開く
        str_count=str(i)
        json_file = open("right_" + str_count + "_keypoints.json")
    
        # JSONとして読み込む
        json_obj  = json.load(json_file)
    
        #　表示
        print(json_obj)
    
[/code]

行き詰っているのでご教授お願いいたします。


CC BY-SA 4.0
2019-01-06T17:34:33.900
51764
2019-01-07T05:51:56.493
2019-01-06T23:14:59.657
19110
31694
question
python python3 json
pythonで複数のjsonファイルを読み込む方法


str_count=str(i)に対してrjust()またはzfill()を適用しましょう。

[code]

    str_count=str(i).rjust(12,'0')
    
[/code]

または

[code]

    str_count=str(i).zfill(12)
    
[/code]

最初の引数は適用後の桁数、rjustの第二引数は付加する文字です。

その他に、今の`for ... range`だと100が範囲に入りません。101にしましょう。

[code]

    for i in range(101):
    
[/code]

さらに、ファイルが無かった場合とか、読み込みでエラーが発生した場合の検出と対処が必要です。  
try except とか、with 等のキーワードで検索して対処してください。

最後に、open したファイルは for ループの中で close しましょう。


CC BY-SA 4.0
2019-01-06T23:19:54.013
51768
2019-01-06T23:19:54.013
26370
51764
answer


  * `"".format()`を使う 
    * 分かりやすくなる
  * `with` syntaxを使う 
    * [@nekketsuuu♦](https://ja.stackoverflow.com/users/19110/nekketsuuu) 氏の指摘の通り、ファイルオープンをブロック化することで`close`などの考慮を楽に出来る

という点を踏まえて、以下のようにやると良さそうです。

[code]

    for file_name in ["right_{:012d}_keypoints.json".format(i) for i in range(101)]:
        with open(file_name) as f:
            # ...
    
[/code]


CC BY-SA 4.0
2019-01-07T02:06:52.753
51772
2019-01-07T05:51:56.493
2019-01-07T05:51:56.493
29826
29826
51764
answer