テキストファイルの読み書き(open, read, write)
1.1ファイルを開く (open)
open()
関数を使うことで、ファイルを開いてそのファイルにアクセスできます。ファイルを開く際には、モードを指定する必要があります。以下のモードがあります:
-
'r'
: 読み込み専用 -
'w'
: 書き込み専用(ファイルが存在しない場合は新規作成) -
'a'
: 追記モード(ファイルが存在しない場合は新規作成) -
'b'
: バイナリモード(画像や音声ファイルなど)
# ファイルを開く(読み込みモード)
file = open('sample.txt', 'r')
1.2 ファイルの読み込み (read)
ファイルを開いたら、read()
メソッドを使って内容を読み取ることができます。read()
はファイル全体を読み込み、文字列として返します。
# ファイルを開く(読み込みモード)
file = open('sample.txt', 'r')
# ファイル全体を読み込む
content = file.read()
print(content)
# ファイルを閉じる
file.close()
1.3 ファイルへの書き込み (write)
write()
メソッドを使ってファイルに内容を書き込みます。もしファイルが既に存在していれば、その内容は上書きされます。
# ファイルを開く(書き込みモード)
file = open('sample.txt', 'w')
# ファイルに書き込み
file.write("Hello, World!\n")
file.write("Python file operations\n")
# ファイルを閉じる
file.close()
1.4 ファイルを開いて内容を読み込んで書き込み
ファイルの内容を読み込んで変更し、再度ファイルに書き込むことも可能です。以下はファイルを読み込み、その内容を変更して新しい内容を書き込む例です。
# ファイルを開く(読み込みモード)
file = open('sample.txt', 'r')
content = file.read()
file.close()
# 内容を変更する
modified_content = content.replace("World", "Python")
# ファイルを開く(書き込みモード)して新しい内容を保存
file = open('sample.txt', 'w')
file.write(modified_content)
file.close()
1.5 ファイルを閉じる (close)
ファイルを使い終わった後は、close()
メソッドを使ってファイルを閉じることが重要です。これをしないと、ファイルがロックされてしまったり、データが保存されない可能性があります。
file.close()
注意点
-
ファイルが存在しない場合
読み込みモードでファイルが存在しない場合、エラーが発生します。書き込みモードであれば、新しくファイルが作成されます。 -
ファイルの位置
ファイルを読み書きする際、カーソルがファイルのどこにあるかによって次の読み書き位置が決まります。例えば、read()
でファイルを読み込むと、カーソルはファイルの終わりに移動します。
この基本的なファイル操作を覚えておくと、テキストファイルを操作する際に非常に役立ちます。
with文を使ったファイル操作
with
文を使うことで、ファイルの開閉を自動的に管理できます。with
文の最大の利点は、ファイル操作が終了した後に自動的にファイルが閉じられるため、close()
メソッドを明示的に呼ぶ必要がない点です。これにより、ファイルのクローズを忘れてリソースリーク(メモリやファイルのロック状態)を防ぐことができます。
2.1 with文を使ったファイルの読み込み
with
文を使うと、ファイルを開いた状態でその中身を操作でき、ファイル操作が終了すると自動的に閉じてくれます。
# with文を使ってファイルを開く
with open('sample.txt', 'r') as file:
content = file.read() # ファイル全体を読み込む
print(content) # 読み込んだ内容を表示
# ファイルは自動的に閉じられる
-
with
文のブロック内でファイルが開かれ、そのブロックを抜けるとファイルが自動的に閉じられます。 -
open('sample.txt', 'r')
でファイルを開き、file.read()
でファイルの内容を読み込んでいます。 -
ファイルはブロックを抜けるときに自動的に閉じられ、
file.close()
を手動で呼ぶ必要はありません。
2.2 with文を使ったファイルの書き込み
同様に、with
文を使うことでファイルに書き込むこともできます。write()
メソッドを使って内容を書き込む例を見てみましょう。
# with文を使ってファイルを開く(書き込みモード)
with open('sample.txt', 'w') as file:
file.write("Hello, World!\n")
file.write("This is an example using the 'with' statement.\n")
# ファイルは自動的に閉じられる
-
open('sample.txt', 'w')
で書き込みモードでファイルを開き、file.write()
で内容を書き込みます。 -
書き込み操作が終了すると、
with
ブロックを抜ける際にファイルが自動的に閉じられます。
2.3 with文を使ったファイルの追加書き込み(追記)
既存のファイルに追記する場合、open()
関数のモードを 'a'
(追記モード)に指定します。これも with
文を使って簡単に行えます。
# with文を使ってファイルを開く(追記モード)
with open('sample.txt', 'a') as file:
file.write("Adding more lines using 'with' statement.\n")
# ファイルは自動的に閉じられる
-
open('sample.txt', 'a')
で追記モードでファイルを開き、file.write()
で追加の内容を書き込みます。 -
追記モードでは、既存の内容の後ろに新しい内容が追加されます。
2.4 with文を使ったCSVやJSONファイルの操作
with
文はテキストファイル以外でも使用できます。たとえば、csv
やjson
モジュールを使った操作でも、with
文を活用できます。
CSVファイルの読み込み
import csv
# with文を使ってCSVファイルを開く(読み込みモード)
with open('sample.csv', 'r') as file:
csv_reader = csv.reader(file)
for row in csv_reader:
print(row) # 各行を表示
JSONファイルの読み込み
import json
# with文を使ってJSONファイルを開く(読み込みモード)
with open('sample.json', 'r') as file:
data = json.load(file)
print(data) # JSONデータを表示
まとめ
-
with
文を使うと、ファイル操作が終わった後に自動的にファイルが閉じられます。 -
これにより、
close()
を手動で呼ぶ必要がなくなり、コードが簡潔かつ安全になります。 -
ファイルの読み込みや書き込み、さらにCSVやJSONファイルの操作でも
with
文は非常に有用です。
CSV・JSONの扱い(csv, jsonモジュール)
Pythonでは、csv
モジュールとjson
モジュールを使うことで、CSV形式やJSON形式のファイルを簡単に扱うことができます。ここではそれぞれのモジュールを使用したファイルの読み書き方法について説明します。
3.1 CSVファイルの扱い(csvモジュール)
CSV(Comma Separated Values)ファイルは、データをカンマで区切ったテキスト形式で保存するファイルです。Pythonのcsv
モジュールを使うと、CSVファイルの読み書きが簡単に行えます。
CSVファイルの読み込み
CSVファイルを読み込むには、csv.reader()
を使います。これにより、CSVの各行がリストとして返されます。
import csv
# CSVファイルを読み込む
with open('sample.csv', 'r') as file:
csv_reader = csv.reader(file)
for row in csv_reader:
print(row) # 各行をリストとして表示
-
csv.reader()
は、CSVファイルを1行ずつ読み込んでリストとして返します。 -
with
文を使うことで、ファイル操作後に自動的にファイルが閉じられます。
CSVファイルの書き込み
CSVファイルに書き込むには、csv.writer()
を使います。データをリストやタプルの形式で渡すことで、CSV形式でファイルに書き込むことができます。
import csv
# 書き込みデータ
data = [["Name", "Age", "City"], ["Alice", 30, "New York"], ["Bob", 25, "Los Angeles"]]
# CSVファイルに書き込む
with open('sample.csv', 'w', newline='') as file:
csv_writer = csv.writer(file)
csv_writer.writerows(data) # 複数行を一度に書き込む
-
csv.writer()
を使ってCSVファイルにデータを書き込みます。 -
writerows()
は複数行を一度に書き込むメソッドです。
CSVファイルへの単一行の書き込み
import csv
# データを1行書き込む
data = ["Charlie", 28, "Chicago"]
with open('sample.csv', 'a', newline='') as file: # 'a'で追記モード
csv_writer = csv.writer(file)
csv_writer.writerow(data) # 1行書き込む
-
writerow()
は1行ずつ書き込むメソッドです。
3.2 JSONファイルの扱い(jsonモジュール)
JSON(JavaScript Object Notation)ファイルは、データを構造化して保存する形式です。Pythonのjson
モジュールを使うと、JSON形式のデータを簡単に読み書きできます。
JSONファイルの読み込み
JSONファイルを読み込むには、json.load()
を使います。これにより、JSONデータがPythonのデータ型(辞書、リストなど)として返されます。
import json
# JSONファイルを読み込む
with open('sample.json', 'r') as file:
data = json.load(file)
print(data) # JSONデータをPythonの辞書として表示
-
json.load()
は、JSONファイルをPythonのデータ型(辞書やリストなど)に変換します。
JSONファイルの書き込み
JSONファイルに書き込むには、json.dump()
を使います。Pythonのデータ型をJSON形式に変換して、ファイルに書き込みます。
import json
# 書き込むデータ
data = {"name": "Alice", "age": 30, "city": "New York"}
# JSONファイルに書き込む
with open('sample.json', 'w') as file:
json.dump(data, file) # データをJSON形式で書き込む
-
json.dump()
は、Pythonのデータ型(例えば辞書)をJSON形式に変換し、ファイルに書き込みます。
JSONファイルの書き込み(整形)
書き込むJSONを見やすく整形するために、indent
パラメータを指定できます。
import json
# 書き込むデータ
data = {"name": "Alice", "age": 30, "city": "New York"}
# 整形してJSONファイルに書き込む
with open('sample.json', 'w') as file:
json.dump(data, file, indent=4) # インデントを4に設定
-
indent=4
を指定すると、JSONファイルがインデント(字下げ)されて見やすくなります。
3.3 まとめ
-
CSVファイル:
csv.reader()
で読み込み、csv.writer()
で書き込みができます。 -
JSONファイル:
json.load()
で読み込み、json.dump()
で書き込みができます。json.dump()
には整形オプションもあります。
以上、ファイル操作についての説明でした。次の章では、標準ライブラリと外部ライブラリについて説明します!