import base64
import json
def read_all_text(filename, encoding="utf-8") -> str:
"""テキストファイルを読み込む
Args:
filename (_type_): ファイル名
encoding (str, optional): エンコーディング(例: "utf-8", "shift-jis", "cp932")
Returns:
str: テキスト
"""
with open(filename, "r", encoding=encoding, errors="replace") as f:
return f.read()
def write_all_text(filename, text: str, encoding="utf-8") -> None:
"""テキストファイルに書き込む
Args:
filename (_type_): ファイル名
text (str): テキスト
encoding (str, optional): エンコーディング(例: "utf-8", "shift-jis", "cp932")
"""
with open(filename, "w", encoding=encoding, errors="replace") as f:
f.write(text)
def read_file_as_base64(filename: str) -> str:
"""ファイルをBASE64エンコードで読み込む
Args:
filename (str): ファイル名
Returns:
str: _description_
"""
with open(filename, "rb") as f:
return base64.b64encode(f.read()).decode("utf-8")
def read_json_as_dict(filename: str, encoding="utf-8") -> dict:
"""JSONファイルをdictとして読み込む
Args:
filename (str): ファイル名
encoding (str, optional): エンコーディング(例: "utf-8", "shift-jis", "cp932")
Returns:
dict: dict
"""
return json.loads(read_all_text(filename, encoding=encoding))
def write_dict_as_json(filename: str, dict: dict, encoding="utf-8", ensure_ascii=True, indent=2) -> None:
"""dictをJSONファイルとして書き込む
Args:
filename (str): ファイル名
dict (dict): dict
encoding (str, optional): エンコーディング(例: "utf-8", "shift-jis", "cp932")
ensure_ascii (bool, optional): ASCII文字以外をエスケープする
indent (int, optional): インデント数
"""
with open(filename, mode="wt", encoding=encoding) as f:
json.dump(dict, f, ensure_ascii=ensure_ascii, indent=indent)