標準ライブラリ

ファイルの操作

ファイルの操作は、OSの提供するシステムコールへのPythonからのインターフェイスです。インポートするパッケージはosです。

ファイルの入出力

 ファイルシステムへのインターフェイス

関数パッケージ
open()os
close()os
write()os
readline()os
path.exists()os
path.join()os
mkdirs()os
pd.read_csv()pandaspandasからcsvへのインターフェイス
pd.to_csv()pandaspandasからcsvへのインターフェイス
ndarray.tofile(fid,[sep,format])numpyテキスト、バイナリ
fromfile(fid,[,dtype,..)numpyテキスト、バイナリ
csv.reader()csvcsvパッケージのインターフェイス
csv.writer()csvcsvパッケージのインターフェイス

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を返します。

-標準ライブラリ