===== ファイル処理 ===== ==== 基本形 ==== 基本形2の場合、withブロックの終了時、暗黙的にclose()が実行されため、close()の呼び出しが不要となる。 # 基本形1 f = open("ファイル名", "モード") # ファイルオープン l = f.readlines() # ファイル操作 f.close() # ファイルクローズ # 基本形2 with open("ファイル名", "モード") as f # ファイルオープン l = f.readlines() # ファイル操作 === モード === 省略した場合、"rt"が適用される ^ モード ^ 説明 ^ | r | 読み込み。 | | w | 書き込み。 | | x | 新規作成。ファイルが存在する場合、エラーとなる。 | | a | 追記書き込み。 | | + | 読み書き両方。 | | t | テキストファイル。r,w,x,a,+と組み合わせて指定。 | | b | バイナリファイル。r,w,x,a,+と組み合わせて指定。 | === encodingオプション === PythonはUTF-8をデフォルトとする。UTF-8以外の文字コードを読み込む場合はeoncodingオプションを指定する。 ^ 値 ^ 別名 ^ 説明 ^ | shift_jis | shiftjisi, sjis | シフトJIS | | cp932 | 932, ms932, mskanji, ms-kanji | Windows用のシフトJIS | | euc-jp | eucjp, ujis, u-jis | EUC-JP | | iso2022_jp | iso2022jp, iso-2022-jp | JIS | with open("test.txt", encoding='shift-jis') as f: l = f.readlines() === newlineオプション === newlineオプションにより、改行コードを指定することができる。 ^ 値 ^ 説明 ^ | \r | CR | | \n | LF | | \r\n | CRLF | with open("test.txt", encoding='shift-jis', newline='\r\n') as f: l = f.readlines() ==== ファイル操作メソッド ==== ^ メソッド ^ 説明 ^ | read() | 終端まで読み込む。 | | read(長さ) | 指定した長さだけ読み込む。 | | readline() | 1行読み込む。 | | readline(長さ) | 指定した長さだけ1行読み込む。 | | readlines() | 1行ずつリストにし、全量読み込む。 | | seek(先頭からの位置) | 指定した場所に読み込み位置を移動する。 | | tell() | 現在の読み込み位置を取得する。 | | truncate(長さ) | ファイルを指定した長さに切り捨てる。長さ省略時、ファイルの内容を全削除する。 | | write(データ) | データを書き込む。 | | writelines(リスト) | リストで構成されたデータを書き込む。 | === 読み込み === # 1行毎にリストにして読み込み with open("test.txt") as f: l = f.readlines() print(l) # 1行ずつ読み込み with open("test.txt") as f: while True: l = f.readline() print(l) if not l: break === 書き込み === #書き込み with open("test.txt", "w") as f: f.write("abc\n") ==== CSVの読み書き ==== === 読み込み === import csv with open("test.csv") as f: reader = csv.reader(f) for l in reader: print(l) === 書き込み === import csv datas = [ [1, 2, 3], [4, 5, 6] ] # 全量書き込み with open("test1.csv", "w") as f: writer = csv.writer(f) writer.writerows(datas) # 1行書き込み with open("test2.csv", "w") as f: writer = csv.writer(f) for data in datas: writer.writerow(data)