Pythonでファイル入出力

続いてファイルの読み込みと書き出し。
とりあえずは入力データをそのまま書き出してみる。

fileio_sample.py

# -*- coding: utf-8 -*-

import sys

if __name__ == "__main__":
    arg = sys.argv

    input_file = arg[1]
    output_file = arg[2]

    with open(input_file, 'r') as in_file:
        with open(output_file, 'w') as out_file:
            for line in in_file:
                out_file.write(line)

ファイルを開くにはopen()という関数を使えばいいらしい。引数はいくつかあって、今回は「ファイル名,読み書きモード」というパターンを使用。ファイル名だけならモードが’r’扱いになるよう。あと、3番目にエンコーディングも指定可能。

11行目と12行目のwith文は説明が難しいけど初期処理とか終了処理とかを自動的にやってくれるものらしい。どんな初期処理や終了処理が動くかは関数によって違い、例えばファイルを開くopen関数の場合だと、withを抜ける時に終了処理として自動的にcloseしてくれるよう。

今回は1行読みながら1行書くので入力と出力の2つのファイルを同時にopenする。順番はどちらが先でもいいと思うが、何となく読む方を先に。

では動かしてみる。
livedoorグルメのデータはサイズが大きいので、テスト用に抜粋して使用。

$ head ratings.csv > test_input.csv
$ python fileio_sample.py test_input.csv test_output.csv
$ cat test_output.csv
id,restaurant_id,user_id,total,food,service,atmosphere,cost_performance,title,body,purpose,created_on
156445,310595,ee02f26a,5,0,0,0,0,,"名前は忘れましたが、札幌で食べたお店よりも、全然こっちの方が美味 しかったので、載せました。お店も綺麗(新規オープン・・)でランチは結構混んでいます。個人的にはゆったりと食事できるので夜の方がオススメです。  辛さが0倍から50倍まで選べるのもGOOD!、スープも2種類みたいで、友達は黄色がオススメと言っていましたが、自分は赤の方を食べました。かなり美味しかったです。店長も好感のもてるお兄さんでした。  駅近くなので一度お試しあれです!",0,"2006-10-07 05:06:09"
3842,10237,fcc21401,1,0,0,0,0,,"味的には別に取り立てておいしいと言うこともない。けどまずくもない。  ギリシア料理といもの自体があまり特徴がないということもあると思う。  でも★1を付けてしまったのはサービスの悪さから。  夜に行ったのですけど、何の説明もなくパンを出された。  本当はおかわり自由らしいけど、それについても何も言ってくれなかったので  当然こちらは催促しないし、「パンのおかわりいかがですか?」の一言もなかった。  女二人で料理3品とドリンク1つづつで¥7000ってかなり高いんじゃない?  場所はいいけど、かなり後悔。せめて笑顔と最低限の説明は欲しいところ。",0,"2004-10-20 00:34:28"
144379,3334,06412af7,2,0,0,0,0,,"意外と昔からあるお店で  近江牛、特選黒毛和牛など高級肉を扱ってるお 肉屋さん  ランチも、きっとおいしいと思い駐車場もあるので行ってみました  ステーキ焼ランチ1050円。とてもリーズナブル  炭火かなと思ったら、ガスでした    でてきたランチのお肉は、ロース肉  サシが入ってなく、見た目オージービーフっぽい  食べてみたら、うーんこれはやっぱ。。。  外国産のお肉みたいな味がする  高くておいしいのは当たり前  1000円ランチといえども肉の質は落として欲しくないな~と思った    他にもお客さん(サラリーマン系)が来てたけど  ランチでも、和牛サーロインステーキとか高い値段のを注文してました  ↑  焼き方を聞いていたので、和牛サーロインステーキ等の場合は  焼いてもらえるみたいですね    ",0,"2006-06-03 16:07:43"
144377,15163,06412af7,5,0,0,0,0,,"ランチがおすすめです  お肉自体の旨み、そしてあまみが  お口にじゅわぁ~と広がります。  あのお値段で、ここまでおいしかったお店は初めてです  駐車場は30台くらいとめられて  周りに別のお店はナイので、近くに看板もあるし場所もわかりやすい",0,"2006-06-03 15:14:45"
75967,567,4ceec99d,3,0,0,0,0,,"おいしいと言う友達のすすめでケーキを2種類、プリン系を2種類買ってみ ました。  ケーキはちょっと当たりハズレがあるのかな?  二つ買ったうちの一つ(苺がのったケーキ)はおいしかった。    プリンはクリームブリュレ風のと洋ナシがのったプリン。  両方とも超美味しい!!プリンはリピーター間違いなし。",0,"2004-12-01 23:12:29"
104898,1026,4ceec99d,5,0,0,0,0,,"ランチに利用しました。1,000円のカレー2種+ナンのセット。飲み物付   カレーがのったお皿にミニサラダとチキンも付いてました。    チキンカレーと野菜カレーを頼みました。カレーはスパイスが効いています。  でもだいぶ日本人向けに作ってあるように感じます。  私が頼んだチキン、野菜カレーはさらさらのタイプのカレーでは無く、少しとろみがあるタイプでした。  ナンが大きくて最初は食べきれるかな?と思ったのですが、全然いらぬ心配でした。  パリパリで、中はふっくらなナンはおかわりしたいぐらい美味しかったです。  夜のメニューを見せてもらったら、カレーはかなり種類があるみたいです。  激辛からマイルドと種類も豊富なので、辛いもの苦手な方も行ってみる価値ありです。",0,"2005-01-04 03:57:02"
86073,1058,4ceec99d,5,0,0,0,0,,"神楽坂付近に行く時は必ず寄る店です。  私はいつも抹茶ババロアを食べます。  甘さ控えめなババロア、上品な味の餡、濃厚な生クリーム  この3つがとってもいいバランス!!    注文してから待っている間に出るおせんべいも美味しい。  お茶をすすりながら待っている時間も堪能できる。  いつ行っても混んでいる理由は分かります。純粋においしいですもんね。    納得のお値段なんだけど‥  ただ持ち帰りにすると少し割高感を感じるんですよね。",0,"2004-11-09 00:34:17"
13968,2569,4ceec99d,3,0,0,0,0,,"タンタン麺を食べました。味は濃いめでしっかりとした味。  とっても美味しかったです。  お客さんはみんな地元の常連さんが多いと思いました。  店員の方も対応すごくいいです。",0,"2004-09-22 23:29:57"
97833,3309,4ceec99d,4,0,0,0,0,,"土曜日のランチで利用しました。  席が隣の人と近くてちょっとドキドキ。煙草吸う人来たら嫌だな~と。    ランチセットはメインが数種類から選べて、ピラフ、サラダ、デザート、コーヒーで1000円。  今回は+500円増のメインサイコロステーキを頂きました。  マスタードのソースとすごく合っていて美味しい。  連れのお皿からマッシュポテトを頂戴する。少し甘めで美味し~い!!    私が行った時は常に満員状態でした。  ‥にも関わらず、店員の方はよく気のきく感じでしたね。  コーヒーも気兼ねなくおかわりできますし。  また是非行きたいですね。",0,"2005-05-28 23:17:16"

今日のところはこのへんで。

コメント

コメントする