この章では、テキストファイルやJSON、CSVファイルの読み書きといった、実践的なファイル操作を学びます。特に、リソース管理を安全かつ簡潔に行うための with
文(コンテキストマネージャ)は、Pythonプログラミングにおいて必須の知識です。
Pythonでファイルを操作するには、まず組み込み関数の open()
を使ってファイルオブジェクトを取得します。open()
は少なくとも2つの引数、ファイルパスとモードを取ります。
'data.txt'
)。'r'
: 読み込み専用(デフォルト)'w'
: 書き込み専用(ファイルが存在すれば上書き)'a'
: 追記(ファイルの末尾に書き足す)'x'
: 新規作成して書き込み(ファイルが存在するとエラー)'+'
を付けると読み書き両用になります(例: 'r+'
, 'w+'
)。'b'
を付けるとバイナリモードになります(例: 'rb'
, 'wb'
)。encoding='utf-8'
は、特に日本語のような非ASCII文字を扱う際に重要です。文字化けを防ぐため、テキストファイルを扱う際はエンコーディングを明示的に指定することを強く推奨します。ファイルを閉じる close()
メソッドを呼び出すまで、ファイルリソースはプログラムによって確保されたままになります。
ファイルオブジェクトのメソッドを使って、ファイルの内容を操作します。
write()
メソッドは、文字列をファイルに書き込みます。このメソッドは書き込んだ文字数を返します。
write()
は自動的には改行しないため、必要であれば自分で改行コード \n
を追加します。
ファイルからデータを読み込むには、いくつかの方法があります。
read()
: ファイルの内容全体を一つの文字列として読み込みます。readline()
: ファイルから1行だけを読み込み、文字列として返します。readlines()
: ファイルのすべての行を読み込み、各行を要素とするリストで返します。ファイルを open()
したら close()
する必要がありますが、処理中に例外が発生すると close()
が呼ばれない可能性があります。これを確実に、そして簡潔に書く方法が with
文です。
with
文のブロックを抜けると、ファイルオブジェクトは自動的に close()
されます。エラーが発生した場合でも同様です。これは「コンテキストマネージャ」という仕組みによって実現されており、ファイル操作の標準的な方法です。
このように、with
文を使えば close()
の呼び出しを忘れる心配がなく、コードもすっきりします。今後は常に with
文を使ってファイルを扱うようにしましょう。
JSON (JavaScript Object Notation) は、データ交換フォーマットとして広く使われています。Pythonの標準ライブラリである json
モジュールを使うと、Pythonのオブジェクト(辞書やリストなど)をJSON形式のデータに、またはその逆に変換できます。
json.dump(obj, fp)
: Pythonオブジェクト obj
をJSON形式でファイルオブジェクト fp
に書き込みます。json.load(fp)
: JSON形式のファイルオブジェクト fp
からデータを読み込み、Pythonオブジェクトに変換します。json.dump()
の indent=4
は、人間が読みやすいように4スペースのインデントを付けて出力するオプションです。ensure_ascii=False
は、日本語などの非ASCII文字をそのままの文字で出力するために指定します。
CSV (Comma-Separated Values) は、スプレッドシートやデータベースでよく使われる表形式のデータを保存するためのフォーマットです。csv
モジュールを使うと、CSVファイルの読み書きが簡単になります。
csv.writer()
を使ってライターオブジェクトを作成し、writerow()
(1行) や writerows()
(複数行) メソッドでデータを書き込みます。
csv.reader()
を使ってリーダーオブジェクトを作成します。このオブジェクトをループで回すことで、1行ずつリストとしてデータを取得できます。
注意点として、csv
モジュールはすべてのデータを文字列として読み込みます。数値として扱いたい場合は、自分で int()
や float()
を使って型変換する必要があります。
この章では、Pythonを使った基本的なファイルの入出力について学びました。
open()
関数: ファイルを開き、ファイルオブジェクトを取得するための基本です。モード ('r'
, 'w'
, 'a'
) とエンコーディング ('utf-8'
) の指定が重要です。.read()
, .readline()
, .write()
といったメソッドを使って、ファイルの内容を操作します。with
文: ファイルを自動的に閉じるための最も安全で推奨される方法です。コンテキストマネージャの仕組みにより、後片付けが確実に行われます。json
モジュール: Pythonの辞書やリストを、広く使われているデータ形式であるJSONとして読み書きするために使用します。json.dump()
と json.load()
が中心的な関数です。csv
モジュール: カンマ区切りの表形式データを扱うためのモジュールです。csv.writer()
と csv.reader()
を使って、行単位での読み書きを簡単に行えます。ファイル操作は、プログラムの設定を保存したり、処理結果を記録したり、他のシステムとデータをやり取りしたりするなど、あらゆるアプリケーションで必要となる基本的なスキルです。
id
: 101name
: "Sato Kenji"email
: "kenji.sato@example.com"with
文と json
モジュールを使って user_profile.json
という名前のファイルに書き出してください。その際、人間が読みやすいようにインデントを付けてください。user_profile.json
ファイルを読み込み、内容をコンソールに表示してください。python practice7_1.py
あなたは店舗の売上データ(CSV形式)を処理する必要があります。以下の手順でプログラムを作成してください。
sales.csv
ファイルを読み込みモードで開きます。csv.reader
を使ってデータを1行ずつ読み込み、ヘッダー行(1行目)は無視してください。ヒント: csv
モジュールで読み込んだ値はすべて文字列型です。計算する前に int()
を使って整数型に変換する必要があります。
python practice7_2.py