Pythonのopen()関数の注意点

Pythonでファイルを作成しようと思って検索すると以下のようなosモジュールを使ったコードをよく見かけることになると思います。

import os
f = os.open('spam.txt', 'w')
f.write('')
f.close()


ところが、実際にこのコードを実行しようとすると、2行目の段階で次のエラーメッセージに直面します。

Traceback (most recent call last):
File "", line 1, in

このエラーが出ないようにしてPythonでファイルを作成するために2つの方法を紹介します。

  1. 組み込み関数のopen()を使う
  2. osモジュールの正しい使い方を覚える

1. 組み込み関数のopen()を使う
Pythonには組み込み関数のopen()があります。osモジュールの方がより詳細なファイルアクセスができますが、組み込み関数のopen()の方が簡単かつ、実行結果も早い(みたい)です。


組み込み関数open()を使ってファイルの新規作成をするには

# spam.txtとうファイルを作って、eggsという文字列を書き込みます。
>>> f = open('spam.txt', 'w')
>>> f.write('eggs')
>>> f.close()


もっと詳しいことを知りたいときは↓
http://docs.python.org/library/functions.html#open




2. osモジュールの正しい使い方を覚える
ここでは簡単にコードだけ紹介します。
詳細は↓のドキュメントをご確認ください。

>>> import os
>>> f = os.open('eggs.txt', os.O_CREAT)
>>> f = os.open('eggs.txt', os.O_RDWR)
>>> os.write(f, 'spam')
4
>>> os.close(f)


5行目に表示される数字の4ですが、これはos.write()で実際にファイルに書き込まれたデータのバイト数を返して表示しています。


osモジュールを使う注意点として、


import osをfrom os import *と書いてしまうと、組み込み関数のopen()よりもosモジュールのopen()が優先されて組み込み関数のopen()が使えなくなるので、組み込み関数のopen()を使う時はfrom os import *とは書かないようにしましょう。