質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1774閲覧

pythonで1つのディレクトリ内にある複数のjsonファイルを読み込み、値を変更して1ファイルずつ保存したい

super100

総合スコア1

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2022/05/03 05:52

▼前提
pythonもjsonも扱いがほとんどできないです。
質問の仕方すら正しいか不明ですが、お知恵お借りできますと幸いです。

▼やりたいこと
1000のjsonファイルに対して1つのファイルごとに'値'を更新したい
更新する値は変数で1 ~ 1000と連続する数字を入れたい

▼発生していること・つまずいていること
1つのファイルに対してやりたいことを実行することはできた。
しかし、1つのファイルしか処理ができず、2~1000のjsonに対しても、
同様の処理を行いたい

▼フォルダ構造
json
┣test1.json
┣test2.json
┣test3.json



┗test1000.json

▼jsonの中身_ファイル名[test1.json]

json

1{ 2 "name": "test", 3 "description": "sample", 4 "URL": "", 5} 6

▼実行しているコード

python

1import json 2import os 3 4dir = "json" 5i = 0 6 7for path in os.listdir(dir): 8 if os.path.isfile(os.path.join(dir, path)): 9 i + 1 10 11 12 13with open('json/test' + str(i+1) + '.json', 'r') as f: 14 json_file = json.load(f) 15 json_file['URL'] = "https://xxxxxxxxxxxxxxxxxxxxxxxxx/" + str(i+1) 16 17 18with open('output/sample' + str(i+1) + ".json", 'w') as f: 19 json.dump(json_file, f, indent=4)

▼実行結果_ファイル名[sample1.json]

json

1{ 2 "name": "test", 3 "description": "sample", 4 "URL": "https://xxxxxxxxxxxxxxxxxxxxxxxxx/1", 5} 6

▼調べたこと
複数のjsonファイルをマージする方法や、
上記のコードも調べて組み合わせて実行してみたものになります。
初心者ですので、このコードが良いのかも分からずに書いております。

▼使っているツール
VScode
python 3.11.0a7+

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2022/05/03 06:27

> 1つのファイルに対してやりたいことを実行することはできた。 forループの中にjsonファイルの読み込み&書き込み処理を入れれば良いだけな気がしますが試しましたか?
super100

2022/05/03 14:15

> forループの中に〜 こちらアドバイス頂きましてありがとうございます。 試行錯誤しまして、求めている結果を得ることができました。 こちらのアドバイスを頂けたおかげでございます。 ありがとうございました。
guest

回答1

0

ベストアンサー

ここまで出来ていてなぜできないのかわかりませんが、元のテイストを残すと、こんな感じでしょうか。

Python

1import json 2import os 3 4dir = "json" 5i = 0 6for path in os.listdir(dir): 7 i + 1 8 with open(os.path.join(dir, path), 'r') as f: 9 json_file = json.load(f) 10 json_file['URL'] = "https://xxxxxxxxxxxxxxxxxxxxxxxxx/" + str(i+1) 11 with open(os.path.join(dir, path), 'w') as f: 12 json.dump(json_file, f, indent=4)

投稿2022/05/03 07:15

otn

総合スコア84533

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

super100

2022/05/03 14:10 編集

ありがとうございます! 回答いただいた内容を試してみました。 エラーが出つつも試行錯誤した結果、思うような結果が得られました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問