Symfoware

Symfowareについての考察blog

Pythonでモダンなファイルの開き方

マニュアルを眺めていたら見つけたのでメモしておきます。


普通にファイルオープン



例えば、以下の内容が記載されている「param.txt」を読み込んで全行表示してみます。


param1 = param1_value
param2 = param2_value
param3 = param3_value




こんなプログラムになるでしょうか。

  1. # -*- coding:utf-8 -*-
  2. f = open('param.txt', 'r')
  3. for line in f:
  4.     print (line.strip())
  5. #ファイルが閉じているか確認 ここではFalse
  6. print(f.closed)
  7. f.close()
  8. #close()後にファイルが閉じているか確認 ここではTrue
  9. print(f.closed)






実行してみると、当然ですがclose()の前はファイルが開かれた状態になっています。

param1 = param1_value
param2 = param2_value
param3 = param3_value
False <= close()前にファイルが閉じられているか
True









withを使用してファイルオープン



http://www.python.jp/doc/release/tutorial/inputoutput.html#tut-filemethods
こちらを参考に、withを使用してファイルを開いてみます。


  1. # -*- coding:utf-8 -*-
  2. with open('param.txt', 'r') as f:
  3.     for line in f:
  4.         print (line.strip())
  5. #ファイルが閉じているか確認
  6. print(f.closed)




実行してみると、withブロックを抜けた時点でファイルが閉じられています。


param1 = param1_value
param2 = param2_value
param3 = param3_value
True







もちろん、codecsを使用する場合にも使えます。


  1. # -*- coding:utf-8 -*-
  2. import codecs
  3. #codecsを使用して、文字コードを指定してファイルオープン
  4. with codecs.open('param.txt', 'r', 'utf-8') as f:
  5.     for line in f:
  6.         print (line.strip())
  7. #ファイルが閉じているか確認
  8. print(f.closed)






関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2011/12/23(金) 18:10:05|
  2. Python
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<Javaのプログレスバーが再描画されない場合の対処方法 | ホーム | Pythonでオブジェクトに対し、動的にプロパティやメソッドを追加する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/875-2c92e1b1
この記事にトラックバックする(FC2ブログユーザー)