ファイルの読み書き

ファイルとディレクトリパスの操作についてより深く知りたい場合は、ファイルとディレクトリのパスのページを参照してください。

ファイルの読み書きプロセス

Python でファイルへの読み書きを行うには、withステートメントを使用するのが適切です。これにより、処理が完了した後にファイルが自動的に閉じられ、利用可能なリソースが管理されます。

ファイルのオープンと読み込み

open関数はファイルをオープンし、対応するファイルオブジェクトを返します。

# 'with'ステートメントを使用してファイルを読み込む:完了すると自動的にファイルが閉じられる
with open('/home/labex/project/hi.txt') as hello_file:
    hello_content = hello_file.read()  # ファイルの内容全体を読み込む

hello_content
'Hello World!'
クイズ

ログインしてこのクイズに回答し、学習の進捗を追跡できます

ファイルをオープンする際にwithステートメントを使用する主な利点は何ですか?
A. エラーが発生した場合でも、処理が完了するとファイルが自動的に閉じられる
B. ファイルのオープンが速くなる
C. ファイルを読み取りモードと書き込みモードで同時に開くことができる
D. ファイルが自動的に圧縮される

あるいは、readlines() メソッドを使用して、ファイルから文字列のリストを取得することもできます。これは、テキストの各行に対して 1 つの文字列となります。

# readlines() メソッド:各行に対して 1 つの文字列を含むリストを返す
with open('sonnet29.txt') as sonnet_file:
    sonnet_file.readlines()  # 各行を文字列として含むリストを返す
['When, in disgrace with fortune and men's eyes,\n',
 ' I all alone beweep my  outcast state,\n',
 "And trouble deaf heaven with my bootless cries,\n",
 "And look upon myself and curse my fate,']

ファイルを 1 行ずつイテレートすることもできます。

# ファイルを 1 行ずつイテレートする (大きなファイルに対してメモリ効率が良い)
with open('sonnet29.txt') as sonnet_file:
    for line in sonnet_file:  # ファイルオブジェクトはイテラブルである
        print(line, end='')  # 余分な改行なしで出力
When, in disgrace with fortune and men's eyes,
I all alone beweep my outcast state,
And trouble deaf heaven with my bootless cries,
And look upon myself and curse my fate,

ファイルへの書き込み

# ファイルへの書き込み:'w'モードは既存のファイルを上書きする
with open('bacon.txt', 'w') as bacon_file:  # 'w' = 書き込みモード
    bacon_file.write('Hello world!\n')  # 書き込まれた文字数を返す
13
# ファイルへの追記:'a'モードは既存のファイルに追記する
with open('bacon.txt', 'a') as bacon_file:  # 'a' = 追記モード
    bacon_file.write('Bacon is not a vegetable.')
25
with open('bacon.txt') as bacon_file:
    content = bacon_file.read()

print(content)
Hello world!
Bacon is not a vegetable.
クイズ

ログインしてこのクイズに回答し、学習の進捗を追跡できます

モード'w'でファイルを開くこととモード'a'でファイルを開くことの違いは何ですか?
A. 'w'は読み取り用、'a'は書き込み用
B. 'w'はファイルを上書きし、'a'はファイルに追記する
C. 'w'は Windows 用、'a'は Apple 用
D. 違いはない

関連リンク