「Python3」ファイルの読み込み・書き込み(上書き・追加・行数指定)

python3 講座 Python

組み込み関数open()を使用して、ファイルの読み込み・書き込みをすることができます。

組み込み関数open()

path_r = 'data/test01.txt'

f = open(file=path_r, mode="r", encoding="utf-8")
#ここに処理を記述-----------------------------------------------------

#---------------------------------------------------------------------
f.close()

open()したファイルオブジェクトはclose()メソッドでクローズする必要があります。
withブロックを使うとブロックの終了時に自動的にクローズされます。そのため、閉じ忘れることが無くなります。

path_r = 'data/test01.txt'

with open(file=path_r, mode="r", encoding="utf-8") as f:
    pass #ここに処理を記述

よく指定する引数の説明を表にまとめます。

引数 説明
file 相対パスもしくは絶対パスを指定
mode オプションの文字列で、ファイルが開かれるモードを指定
デフォルトは’r’で、読み込み用テキストモードで開く
encoding ファイルのエンコードやデコードに使用する文字コード(’utf-8’など)を指定

“mode”オプションを表にまとめます。

モード 説明
‘r’ 読み込み用に開く
‘w’ 書き込み用に開き、既存ファイルがある場合は上書き
‘a’ 書き込み用に開き、既存ファイルがある場合は末尾に追記
‘x’ 書き込み用に開き、既存ファイルがある場合はエラー『FileExistsError』
‘+’ 更新用に開き、 読み書き両方を指定
‘t’ テキストモード
‘b’ バイナリモード
r+ 読み書き両対応で開く
書き込む場合は上書き
ファイルが存在しない時はエラーになる
w+ 読み書き両対応で開く
ファイルが存在しない時は新規作成される
a+ 追加書き込み・読み書き両対応で開く
ファイルが存在しない時は新規作成される

テキストファイルの読み込み

読み込み用でファイルを開く(mode=’r’)

<ソースコード>
path_r = 'data/test01.txt'
with open(file=path_r, mode="r", encoding="utf-8") as f:
    pass

ファイル全体を文字列として読み込み : read()

‘data/test01.txt’の中身
あいうえお
かきくけこ
さしすせそ
<ソースコード>
path_r = 'data/test01.txt'
with open(file=path_r, mode="r", encoding="utf-8") as f:
    a = f.read()
    print(type(a))
    print(a)
<出力結果>
<class 'str'>
あいうえお
かきくけこ
さしすせそ

ファイル全体をリストとして読み込み : readlines()

‘data/test01.txt’の中身
あいうえお
かきくけこ
さしすせそ
<ソースコード>
with open(file=path_r, mode="r", encoding="utf-8") as f:
    l = f.readlines()
    print(type(l))
    print(l)
<出力結果>
<class 'list'>
['あいうえお\n', 'かきくけこ\n', 'さしすせそ\n']

リスト型で読み込むことで、特定の行数を指定して取り出すことができます。

ファイルを一行ずつ読み込み : readline()

‘data/test01.txt’の中身
あいうえお
かきくけこ
さしすせそ
<ソースコード>
with open(file=path_r, mode="r", encoding="utf-8") as f:
    for s_line in f:
        print(s_line, end="")
<出力結果>
あいうえお
かきくけこ
さしすせそ

テキストファイルの書き込み(新規作成・上書き)

書き込み用でファイルオープン : mode=’w’

<ソースコード>
path_w = 'data/test02.txt'
with open(path_w, mode='w') as f:
    pass

文字列を書き込み: write()

<ソースコード>
path_w = 'data/test02.txt'
with open(path_w, mode='w') as f:
    #テキストファイルの書き込み(新規作成・上書き)
    f.write("おはよう\nこんにちは\nさようなら")
<出力結果(’data/test01.txt’の中身)>
おはよう
こんにちは
さようなら

リストを書き込み : writelines()

<ソースコード>
l = ["おはよう\n", "こんにちは\n", "さようなら"]
with open(path_w, mode='w') as f:
    f.writelines(l)
<出力結果(’data/test01.txt’の中身)>
おはよう
こんにちは
さようなら

テキストファイルの書き込み(新規作成・追加)

‘data/test03.txt’の中身
あいうえお
<ソースコード>
path_a = 'data/test03.txt'
with open(path_a, mode='a') as f:
    f.write("\nかきくけこ")
<出力結果(’data/test03.txt’の中身)>
あいうえお
かきくけこ

行数を指定して書き込み

‘data/test04.txt’の中身
あいうえお
かきくけこ
<ソースコード>
path_w = 'data/test04.txt'
with open(path_w) as f:
    l = f.readlines()

l.insert(0, 'FIRST\n')

with open(path_w, mode='w') as f:
    f.writelines(l)
<出力結果(’data/test04.txt’の中身)>
FIRST
あいうえお
かきくけこ

コメント

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