readやwriteメソッドで読み書きする
with文を使用すると自動的にファイルをクローズしてくれる
# -*- coding: utf-8 -*- # ファイルに書き込む with open("file", "w") as f: f.write("ハロー") # ユニコードの場合はエンコードしてからファイルに書き込む with open("file", "w") as f: us = u"ハロー" f.write(us.encode("utf-8")) # ファイルを読み込む with open("file", "r") as f: print f.read() # for文を使い1行ずつファイルを読み込む with open("file", "r") as f: for line in f: print line # ファイルオブジェクトを継承する class A(file): pass
エンコーディングを指定してファイルの読み書きする場合は
codecsモジュールを使う
# -*- coding: utf-8 -*- import codecs with codecs.open("shift-jis-file", "w", "shift-jis") as f: f.write(u"ハロー") with codecs.open("shift-jis-file", "r", "shift-jis") as f: for line in f: print line
バイナリデータのファイルを読み書きする場合は
arrayモジュールを使う
import array import os.path with open("binary-file", "wb") as f: a = array.array("B", [1,2,3,4,5]) a.tofile(f) with open("binary-file", "rb") as f: a = array.array("B") a.fromfile(f, os.path.getsize(f.name)) print a
with文を使用するには特殊メソッド__enter__と__exit__をクラスに定義し
コンテキストマネージャ型にしなければならない
class A: def __enter__(self): print "enter" def __exit__(self, exc_type, exc_val, exc_tb): print "exit" with A() as a: print "hello"
詳細はドキュメントで
0 件のコメント:
コメントを投稿