【Python】ファイルの書き込み読み込みモード -“w+”,”r+”

Pythonの応用
スポンサーリンク

Pythonでテキストファイルを作成しopenで読み込む方法は学びました。withステートメントでcloseしなくても自動で閉じてくれるということも学びました。

【Python】ファイルの作成と読み込み open,write,read,with,seek
Pythonでのファイルの作成、データの入出力をここでは扱います。open()でファイル作成する時の読み書きのモード、write()での書き込み、read()での読み込み方、withステートメント、seek()での位置の移動を学びます。

ファイルを開く時にモードを指定しましたが、まだ触れていないモードがあるのでここで扱っておきましょう。

スポンサーリンク

書き込みと読み込み”w+”

まずファイルを作成するところから復習も兼ねてやってみましょう。

ファイルは次のようにして作ることができます。

sns = """Twitter 
YouTube
Instagram
Line
"""

with open("practice.txt", "w") as f:
    f.write(sns)

すでにやってきたことですから、特に説明は不要ですね。

実行するとこうなります。(make_file.pyのファイル名でAtomで実行しています)

ここまでは復習です。

では、このファイルの中身を出力(ターミナルに表示)するにはどうすればいいでしょう。こうするとどうでしょう?

sns = """Twitter 
YouTube
Instagram
Line
"""

with open("practice.txt", "w") as f:
    f.write(sns)
    f.read()

ファイルを作成したので、そのまま読み込んでみましたが…

エラーになりました。

ここで読み込みを合わせてやるには、モードを”w+”にする必要があります。コードは次のようになります。

sns = """Twitter
Facebook 
YouTube
Instagram
Line
"""

with open("practice.txt", "w+") as f:    # モードを "w+"にする
    f.write(sns)
    f.seek(0)    # データの先頭に位置を移動する
    print(f.read())

モードを”w+”にすることで読み込みと書き込みを合わせてすることができます。

ファイルを作成した時は、データを読み込む位置は一番最後にきているので、先頭からデータを読み込むためにseek(0)で先頭に移動します。

そこから読み込んでprint()で出力しています。

実行するとこうなります。

ターミナルにファイル内の内容が出力されているのがわかります。

“w+”は”w”と同じようにファイルを上書きするので、単に読み込む為だけに開くと空白のデータになるので注意が必要です。

スポンサーリンク

読み込みと書き込み”r+”

次はファイルを読み込んで書き込むパターンをやってみましょう。今度はモードを”r+”にします。

sns = """Twitter
Facebook 
YouTube
Instagram
Line
"""

with open("practice2.txt", "r+") as f:    # 存在しないファイルを開いてみる
    f.read()
    f.seek(0)
    f.write(sns)

ここでは存在しないファイルを開こうとしています。

“r+”のモードでは存在しないファイルを開こうとすると次のようにエラーになってしまいます。

ですから、すでに存在するファイルを開いて書き込むことが必要です。

こんどは、今まで使っていたpractice.txtを開いて書き込んでみます。

sns = """Twitter
Facebook 
YouTube
Instagram
Line
mixi
"""

with open("practice.txt", "r+") as f:
    f.read()
    f.seek(0)
    f.write(sns)

書き込むデータを一つ増やしています。

実行してみましょう。

元のファイルと書き込むデータが違うことを確認してください。

実行するとこうなります。

ファイルのデータに書き込まれているのがわかります。

スポンサーリンク

まとめ

Pythonのファイルの作成からの操作だけでなく、ファイルを開いてからの操作ができることを学びました。

“w+”モードはファイルを作成した後に、データを読み込むことができます。”r+”モードはファイルを読み込んだ後に書き込むことができます。存在しないファイルを開いた場合はエラーになります。

ファイルのモードをもう一度整理しておきましょう。

Pythonの応用
スポンサーリンク
CodeGraffitiをフォローする

タイトルとURLをコピーしました