2009年10月13日火曜日

ファイル出力

ファイルへの出力
>>> f = open("helloworld.txt", "w")
>>> f.write("Hello World!!")
>>> f.close()
open関数の第2引数に"w"を指定すると書き込みモードでファイルを開きます。
書き込みが確実に実行されるように、必ず最後にcloseを実行しましょう。

ファイルの複製
>>> fr = open("helloworld.txt") # 第2引数のデフォルト値は"r"
>>> fw = open("helloworld_copy.txt", "w")
>>> fw.write(fr.read())
>>> fr.close()
>>> fw.close()

closeしないとどうなるのか?
>>> f = open("helloworld.txt", "w")
>>> f.write("12345")
この段階では、まだファイルは空の状態だった。
>>> f.close()
Closeを実行した瞬間、writeの内容がファイルに書き込まれた。

この結果から判断するとcloseするまで書き込まれないように思われるが、必ずしもそうではない。

以下の例では、すぐに書き込みが実行される。
>>> open("helloworld.txt", "w").write("54321")

また、最初の例を以下のように変更しても書き込みは実行される。
>>> f = open("helloworld.txt", "w")
>>> f.write("12345")
>>> f = ""

Pythonの実装を確認したわけではないが、ファイルオブジェクトへの「参照」がなくなった時点でcloseが自動的に呼び出されているようだ。このことを利用すると、最初にあげた2つの例は以下のように省略できる。

ファイルへの出力
>>> open("helloworld.txt", "w").write("Hello World!!")

ファイルの複製
>>> open("helloworld_copy.txt", "w").write(open("helloworld.txt").read())

明日の記事では、ファイルの入出力を使った実用的な例を紹介しようと思う。

0 件のコメント:

コメントを投稿