[python] ファイル操作

2016年10月5日

Python テクノロジー プログラミング 学習 特集

Pythonの基礎勉強が終わった所で応用、実践を行なって行きたい。 以前、このブログで弾けたどんなプログラム言語でも覚える時にの共通習得仕様:15項目を参考に、実装してみることにしよう。 今回は、ファイル操作を実行してみる。 簡単すぎてアクビするなよ!

読み書き対象のデータファイル

今回の対象となるデータファイルを用意しておきます。 事前にCSV形式でデータを入れておきます。 1,a,SHIKOKU, 2,b,EHIME, 3,c,KAGAWA, 4,d,KOUCHI, 5,e,TOKUSHIMA,

ファイルの読み込み

基本に忠実にファイルデータを読み込んでline毎にprint処理を行います。 #coding: UTF-8 f = open('data.txt', 'r') for row in f: print row f.close()

実行

$ python read.py ## 結果 1,a,SHIKOKU, 2,b,EHIME, 3,c,KAGAWA, 4,d,KOUCHI, 5,e,TOKUSHIMA, なんか、改行が多いですね。 これは、pythonのprint関数がわざわざ毎回改行を加えて表示してくれる、いらんことしい的な機能のためである。 そこで、下記のようにすることで改行は無くなるようです。 print row ↓↓↓↓↓↓ print row, printの後ろに","(カンマ)をつけるだけなんですね。 どうやら次のprintとくっつけてくれる効果があるのかな? とりあえずこれはそんなに悩まず一先ず完了とする。

python v3では・・・

さらにちなみに、上記の書き方はPython v2の書き方なんですが、v3の場合は下記のように書くといいらしいです。 print(row,end="") lineの終了文字列を指定できるんですね。 他の言語にこの手の仕様はないな〜〜〜。

ファイル書き込み

logのrecord方式を再現するために、line追記型にします。 lineの改行コードは"\n"にするのが一般的かもね。 #coding: UTF-8 f = open('data2.txt', 'w') f.write('1,a,kyushu') f.write('2,b,fukuoka') f.write('3.c.nagasaki') f.close()

実行

1,a,kyushu2,b,fukuoka3.c.nagasaki 書き込み用データファイルは「data2.txt」と現在ないモノを指定してみると、存在しなければ自動でファイルを作ってくれるようです。

検討

このプログラムでの問題点は
1, 改行を追加しなければいけない 2, プログラムを実行する度にファイルがリセットされてしまい、追記になっていない
まずは、改行は、"f.write('1,a,kyushu\n')"とすることで問題ないだろう。 そして、2番目の追記問題だが、openコマンドの"w"オプションを追記モードの"a"にするだけで、追記モードでファイルを開く事になるらしい。 #coding: UTF-8 f = open('data2.txt', 'a') f.write('1,a,kyushu\n') f.write('2,b,fukuoka\n') f.write('3.c.nagasaki\n') f.close() この修正版で行なった所、問題なく書き込み完了。 なんて簡単な言語なんだ・・・ だけど、phpのfile_get_contentのような、わざわざfileオープンしなくても読み書きできるともっと便利なのにな・・・ まあ、OSの仕組み上、オープン・クローズ処理は必須ということか・・・

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ