読み書き基本とseek

投稿者: | 2022-10-22

目次

書き込む

# 書き込む
s = """\
ABC
DEF
GHI
JKL
"""

with open('test.txt', 'w') as f:
    f.write(s)

読み込む

# 読み込み
with open('test.txt', 'r') as f:
    print(f.read())

読み込む(readline)

# 1行ずつ読み込む(printの改行+ファイル内の改行で空行がでる)
with open('test.txt', 'r') as f:
    while True:
        line = f.readline()
        print(line)
        if not line:
            break
# 1行ずつ読み込む(end=''で改行をなくす)
with open('test.txt', 'r') as f:
    while True:
        line = f.readline()
        print(line, end='')
        if not line:
            break

チャンクで読み込む

# チャンクで文字数を指定して読み込む(readの引数として利用、改行も1文字)
with open('test.txt') as f:
    while True:
        chunk = 2
        line = f.read(chunk)
        print(line)
        if not line:
            break

seekで移動

  • WIndowsの場合は改行コードが2文字分になるため、複数行の文字列をファイルに書き込む場合は 'newline=\n' を追加すると同様に移動できる(改行コードがLFになる)
# ファイル内の位置を移動する(tellでわかる)
with open('test.txt', 'r') as f:
    print(f.tell()) # 最初の位置はゼロ
    print(f.read(0)) # 最初の位置に文字なし
    print(f.read(1)) # 1文字目の文字を読み込むとA
    print(f.seek(5)) # seekで5番目に移動する(0から数えて5番目)1.A.2.B.3.C.4.D.5.<E>
    print(f.read(1)) # 5番目の最初の文字Eが表示される