ユーザ用ツール

サイト用ツール


サイドバー

Top

プログラミング:python:基本:ファイル処理

ファイル処理

基本形

基本形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)
プログラミング/python/基本/ファイル処理.txt · 最終更新: 2020/07/05 22:45 by sotoyama