Pythonファイル読み書き関連備忘録

はじめに

自分がよく使うファイル読み書き系の処理の備忘録。

試した環境

  • Python 3.7.2(64bit)
  • Windows 10 Home Edition(64bit)

文字列

文字列書き込み

pathlib.Path.write_textを使う。戻り値は書き込んだ文字数。

from pathlib import Path
txt_data = "あ"
write_char_count = Path(r"C:\tmp\data.txt").write_text(data=txt_data, encoding="utf-8")
print(write_char_count)

文字列読み出し

pathlib.Path.read_textを使う。戻り値は読み込んだ文字列。

from pathlib import Path
txt_data = Path(r"C:\tmp\data.txt").read_text(encoding="utf-8")
print(txt_data)

バイト列

バイト列書き込み

pathlib.Path.write_bytesを使う。戻り値は書き込んだバイト数。dataにバイト列でなく文字列を指定するとTypeError。

from pathlib import Path
binary_data = "あ".encode("utf-8")
write_bytes_count = Path(r"C:\tmp\data.txt").write_bytes(data=binary_data)
print(write_bytes_count)

バイト列読み込み

pathlib.Path.read_bytesを使う。戻り値は読み込んだバイト列。

from pathlib import Path
binary_data = Path(r"C:\tmp\data.txt").read_bytes()
print(binary_data)

CSV(Excelで読み書きする場合を想定)

CSV書き込み

csv.writer を使う。newline=””を指定しないと余計な改行(\r)が付与されるので設定。
ExcelはUTF-8のときはBOM付きでないと文字化けするため、encoding=”utf-8-sig”を設定する。

import csv
data = [["ヘッダ1", "ヘッダ2"], ["値1", "値2"]]
with open(r"C:\tmp\data.csv", mode="w", encoding="utf-8-sig", newline="") as f:
    writer = csv.writer(f)
    writer.writerows(data)

CSV読み込み

csv.readerを使う。ExcelはUTF-8保存のときはBOMを付与するため、encoding=”utf-8-sig”を設定する。

import csv
with open(r"C:\tmp\data.csv", mode="r", encoding="utf-8-sig", newline="") as f:
    for row in csv.reader(f):
        print(row)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA