Pythonでテキストファイルを取り扱う

2017年8月8日
python でのテキストファイルの取り扱い方を記載します。

txtファイル

txtファイルの読み込みを行います。

〜省略〜
f = open("file.txt",'rt')
t = f.read()
f.close()
print(t)
〜省略〜

txtファイルの書き込みを行います。

〜省略〜
f = open("file.txt",'wt')
f.write('test\n')
f.close()
〜省略〜

open の主なモード

'r' 読み込み
'w' 書き込み
'a' 追記書き込み
'b' バイナリ
't' テキスト

csvファイル

csvファイルの読み込みを行います。

〜省略〜
import csv
f = open("file.csv", 'r' , newline='')
r = csv.reader(f,delimiter=',')
for row in r:
    print (row)
f.close()
〜省略〜

csvファイルに新規で一行書き込みを行います。6行目のモードが’w’,8行目が writerow となります。

〜省略〜
import csv
date = [0 for I in range(2)]
data[0]="test1"
data[1]="test2"
F = open('file.csv', 'w' , newline='')
writer = csv.writer(F, lineterminator='\n')
writer.writerow(data)
F.close()
〜省略〜

csvファイルに複数行(5行)を追加で書き込みを行います。3行目のモードが’a’,11行目が writerows となります。

〜省略〜
import csv
csvlist = [[0 for I in range(2)] for J in range(5)]
I = 0
while I <= 4:
    csvlist[I][0]="test1"
    csvlist[I][1]="test2"
    I = I + 1
F = open('test_log.csv', 'a' , newline='')
writer = csv.writer(F, lineterminator='\n')
writer.writerows(csvlist)
F.close()
〜省略〜

withを使ったプログラム

with open でcsvファイルの書き込みを行います。例として時間を書き込みます。
この方法だとF.closeが省略できます。

〜省略〜
import csv
import datetime

d = datetime.datetime.today()

date = [0 for I in range(1)]
date[0] = d.strftime('%Y-%m-%d %H:%M:%S')

with open('test_log.csv' , 'a' , newline='') as F:
    writer = csv.writer(F, lineterminator='\n')
    writer.writerow(date)

〜省略〜

サンプルプログラム

テストサンプルのコードです。
今までのコードに加えて、最後にファイル名の変更を行ってみました。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import csv
import datetime
import os

d = datetime.datetime.today()
#print(d.strftime("%Y/%m/%d %H:%M:%S"))

date = [0 for I in range(1)]
date[0] = d.strftime('%Y-%m-%d %H:%M:%S')

with open('test_log.csv' , 'a' , newline='') as F:
    writer = csv.writer(F, lineterminator='\n')
    writer.writerow(date)

csvlist = [[0 for I in range(2)] for J in range(5)]
I = 0

while I <= 4:
    csvlist[I][0]="test1"
    csvlist[I][1]="test2"
    I = I + 1

with open('test_log.csv' , 'a' , newline='')as F:
    writer = csv.writer(F, lineterminator='\n')
    writer.writerows(csvlist)

os.rename("test_log.csv", d.strftime("%Y%m%d_%H%M%S") + "_test.csv")

以上がPythonでのテキストファイル(主にcsv)の取り扱い方でした。