読者です 読者をやめる 読者になる 読者になる

福岡は今日も雨

情報系大学生のブログ。主に技術,音楽について。

ファイルの入出力のあれこれ(上)

Pythonでのファイルの入出力のあれこれのまとめ.
numpyの保存とかその辺りがメイン.

with文

基本的にopen単体で利用することはせず, with文を利用することが大半

with open('path', 'r', encoding='utf-8') as f:
    whole_file = f.read()
    print(f)

read()はファイルのすべてを取り出す. readline()は一行ずつなど. この時, 文字列に全て返還されることに注意する.
数字として扱いたい時はキャストを利用すること.

CSV

ここからは, 各主要なファイルでどのように読み込み, 書き込みをするのかを見ていく.
with文の場合, csvは読み込むことはできるが, 文字列としてインポートされるのであった.
標準モジュールのcsvを利用する場合を見ていこう.

with open('path', 'r', encoding='utf-8') as f:
    whole_file = csv.reader(f)
    print(f)

こちらも文字列として読み込まれるので, 数値を扱うcsvファイルの時はあまり向かない.
numpyにあるloadtxtを利用することもできる.

import numpy as np
data = np.array([1, 2, 3], dtype=np.int32)
np.savetxt('saved.csv', data, fmt='%d', header='time,vel,alt', comments='')

#numpy行列が一行の時, 列で保存されてしまう点に注意
#読み込みは以下(読み込む時はあまり関係ないようだ)

data = np.loadtxt('saved.csv', delimiter=',', skiprows=1, dtype=float)

# array([ 1.,  2.,  3.])

Excel

Excelファイルには拡張子がいくつかあり, それに応じて使うライブラリも異なる

(1)xls -> xlrd, xlwt
(2)ooxml -> openpyxl

これらを使い分ける.

xls

# xlsを使用する
# xlwt .. 書き込み xlrd .. 読み込み

wb = xlwt.Workbook()

ws = wb.add_sheet('シート1')

#書き込み
ws.write(0, 0, 'UpperLeft')
ws.write(1, 0, 1)
ws.write(1, 1, 2)
ws.write(1, 2, xlwt.Formula('A3+B3'))
wb.save('xlwt.xls')

#読み出す
wb = xlrd.open_workbook('xlwt.xls')
st = wb.sheet_by_name('シート1')
print(st.cell(0, 0).value)

openpyxlを利用する時

from openpyxl import load_workbook
import numpy as np

wb = load_workbook(filename='sample.xlsx', read_only=True, data_only=True, use_iterators=True)
ws = wb['温度変化']

Nrows = 11
time_vec = np.zeros(Nrows)
temp_vec = np.zeros(Nrows)

for i, row in enumerate(ws.iter_rows(row_offset=1)):
    time_vec[i] = row[0].value
    temp_vec[i] = row[1].value

明日はpickle, npyなどのバイナリデータや, pandasなどを見ていく.