Python でファイルに JSON を書き込む
JSON は軽量で人間が読める形式のファイル形式であり、業界で頻繁に使用されています。JSON は JavaScript Object Notation
の略です。名前が示すように、JSON は Web 開発者の間で非常に人気があり、サーバーまたは他のアプリケーションとの間でデータを送受信するために Web アプリケーションで頻繁に使用されます。
Python には多くの組み込みパッケージまたはモジュールが付属しており、インターネットを介して使用できる多くの外部モジュールがあります。興味深いことに、JSON データを処理するための組み込みモジュール json
もあります。
Python では、JSON は 2つの方法で表すことができます。まず、文字列として。JSON 文字列は次のようになります。
jsonString = '{ "name": "DelftStack", "email": "DelftStack@domain.com", "age": 20, "country": "Netherlands", "city": "Delft"}'
JSON を文字列として表す場合は、キーと文字列値をラップするために二重引用符(""
)のみを使用するようにしてください。JSON は一重引用符をサポートしておらず、一重引用符が使用されている場合はエラーをスローします。
2 番目の方法は、Python オブジェクト、または一般に Python ディクショナリとして知られているオブジェクトを使用することです。JSON と同様の構文を持っています。
Python 辞書の形式での JSON の表現は次のようになります。
jsonObject = {
"name": "DelftStack",
"email": "DelftStack@domain.com",
"age": 20,
"country": "Netherlands",
"city": "Delft",
}
繰り返しになりますが、二重引用符のみを使用するようにしてください。
Python の json
モジュールを使用してファイルに JSON を書き込む
JSON を文字列の形式で格納する変数があるとします。したがって、JSON ファイルに書き込むには、次のコードを使用できます。
import json
fileName = "my-data.json"
jsonString = '{ "name": "DelftStack", "email": "DelftStack@domain.com", "age": 20, "country": "Netherlands", "city": "Delft"}'
jsonString = json.loads(jsonString)
file = open(fileName, "w")
json.dump(jsonString, file)
file.close()
まず、json
モジュールをインポートしました。次に、JSON ファイル名と JSON 文字列自体を 2つの変数に格納しました。次に、書き込み
モードで選択した名前で新しいファイルを作成して開きます。
次に、json
モジュールの loads
関数を使用して、JSON 文字列を Python 辞書に変換し、ファイルに書き込みます。この関数は有効な JSON 文字列を受け入れ、それを Python 辞書に変換します。
この関数に無効な文字列が指定された場合、
json.decoder.JSONDecodeError
エラーがスローされることに注意してください。したがって、正しい文字列を渡すか、エラー処理にtry-except-finally
ブロックを使用するようにしてください。
次に、json
モジュールが提供する dump()
メソッドを使用します。このメソッドは、Python ディクショナリとファイル記述子をパラメータとして受け入れ、ディクショナリのデータをファイルに書き込みます。
dump()
メソッドは、ファイルがバイナリ形式で開かれていない場合にのみ機能します。つまり、"wb"
と"rb"
が機能せず、TypeError
が発生します。
最後に、ファイルを閉じて、プログラムを終了します。プログラムで定義した名前の JSON ファイルが現在のディレクトリに作成されます。
同じ名前で同じ拡張子のファイルが作業ディレクトリに存在する場合、そのファイルの内容は上書きされます。
ここで、Python オブジェクトまたは Python 辞書を JSON ファイルに書き込みたいとします。その場合は、次のコードスニペットを参照してください。
import json
fileName = "my-data.json"
jsonObject = {
"name": "DelftStack",
"email": "DelftStack@domain.com",
"age": 20,
"country": "Netherlands",
"city": "Delft",
}
file = open(fileName, "w")
json.dump(jsonObject, file)
file.close()
この場合、すでに python オブジェクトまたはディクショナリがあり、上記で説明したように、dump()
はディクショナリをパラメータとして受け入れ、ファイル記述子に書き込みます。そのため、書き込みモードでファイルを開き、dump()
メソッドを使用してファイルにデータを書き込み、ファイルを閉じます。