ファイルの操作は、OSの提供するシステムコールへのPythonからのインターフェイスです。インポートするパッケージはosです。
ファイルの入出力
ファイルシステムへのインターフェイス
関数 | パッケージ | |
open() | os | |
close() | os | |
write() | os | |
readline() | os | |
path.exists() | os | |
path.join() | os | |
mkdirs() | os | |
pd.read_csv() | pandas | pandasからcsvへのインターフェイス |
pd.to_csv() | pandas | pandasからcsvへのインターフェイス |
ndarray.tofile(fid,[sep,format]) | numpy | テキスト、バイナリ |
fromfile(fid,[,dtype,..) | numpy | テキスト、バイナリ |
csv.reader() | csv | csvパッケージのインターフェイス |
csv.writer() | csv | csvパッケージのインターフェイス |
TSV,CSV形式のファイルを読み込む
TSVファイルを読み込んで配列rows[] にストアします。
import os
with open( fpath, "r" ) as f:
str = f.readline()
while( str ) :
if str == '\n':
str = f.readline()
rows = str.split("\t")
date = rows[0]
var1 = rows[1]
ret = some_function( date, var1 )
count = count + 1
str = f.readline()
f.close()
csvファイルをPandas データフレームに読み込みます。
import pandas as pd
df = pd.read_csv( filepath )
CSVモジュールを使ってファイルを読み込みます。
import csv
with open('eggs.csv', newline='') as csvfile:
spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
for row in spamreader:
some_function(row)
ファイルにデータを書き込む
書き込み用にファイルを開いてデータを書き込みます。下の例では二次元配列objectsからひとつづつデータ列を取り出し、一行作って書き込んでいます。
import os
storefile = "./../data/filename.csv"
with open( storefile, "w" ) as f:
f.write( label )
for obj in objects:
line = "\n" + str(obj[0]) + str(obj[1])
f.write( line )
f.close()
配列のデータをファイルに書き込みます。
a = array('f',[1.0,2.3,1.2,0.9,3.7])
f = open( 'array.py', "wb" )
a.tofile(f)
f.close()
Pandas のデータフレームをcsvファイルに保存します。
import pandas as pd
fpath = "./../data/fname.csv"
ret = df.to_csv( fpath, index=None)
CSVモジュールを使う場合の例です。
import csv
with open( fpath, 'w', newline='') as csvfile:
writer = csv.writer(csvfile, delimiter=' ',quotechar ='|', quoting=csv.QUOTE_MINIMAL)
writer.writerow(['ABC','DEF','ZXY'])
ディレクトリを作成する
指定したパスにディレクトリを作成します。modeパラメータは mkdir()に渡されます。exist_okがFalseに設定(デフォルト)時、作成するファイルがすでに存在する場合はエラーになります。
import os
if not os.path.exists(dirname) : os.makedirs(dirname)
os.path.exists()は指定したパスにファイル、ディレクトリがあるかどうかを調べて、存在しない場合はFalseを返します。