ファイルオブジェクトについて見ていく。
目標
- ファイルオブジェクトについて理解する。
- ファイルの基本的な操作を覚える。
ファイルオブジェクトとは
マシン上に存在するファイルへのリンクオブジェクトで、ファイルを操作する場合に使用する。
疑問:ファイルであれば操作できるのか?たとえばデバイス等。多分できるんだろうね。
ファイルオブジェクトのカテゴリ
ファイルオブジェクトは「シーケンス」でも「写像」でも「数値」でもない。
じゃあ、なんだ?次のセクションを見るとどうも「エクステンション」カテゴリーらしい。。
ファイルの基本的な操作
操作 | 説明 |
---|---|
fp = open('/tmp/spam', 'w') | 出力ファイルのオープン |
fp = open('data', 'r') | 入力ファイルのオープン |
s = fp.read() | ファイル全体読み込み。内容を1つの文字列にする |
s = fp.read(N) | Nバイト読み込み(Nは1バイト以上) |
s = fp.readline() | 行の読み込み(行末記号含む) |
L = fp.readlines() | ファイル全体読込。内容を文字列のリストとして返す |
fp.write(S) | 文字列Sをファイルに出力 |
fp.writelines(L) | 文字列のリストLを全てファイルに出力 |
fp.close() | ファイルのクローズ。ガーベージコレクションの対象になれば自動でクローズされる。 |
上記を使ってみる。
$ python
Python 2.4.4 (#2, Apr 5 2007, 20:11:18)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> fp = open('aaa','w')
>>> fp.write('hello world\n')
>>> fp.close()
>>>
$ cat aaa
hello world
$
オープン、クローズ、書き込みをしてみた。
次は読み込んでみる。
$ python
Python 2.4.4 (#2, Apr 5 2007, 20:11:18)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> fp = open('aaa','r')
>>> S = fp.read()
>>> fp.close()
>>> S
'hello world\n'
>>>
読めました。
次、複数行パターン。
$ cat aaa
hello world1
hello world2
hello world3
hello world4
$ python
Python 2.4.4 (#2, Apr 5 2007, 20:11:18)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> fp = open('aaa','r')
>>> L = fp.readlines()
>>> fp.close()
>>> L
['hello world1\n', 'hello world2\n', 'hello world3\n', 'hello world4\n']
>>>
複数行の出力も。
>>> fp = open('aaa', 'w')
>>> fp.writelines(['a\n','b\n','c\n'])
>>> fp.close()
>>>
$ cat aaa
a
b
c
$
まとめ
- ファイルオブジェクトは「数値」でも「シーケンス」でも写像でもない。
- ファイルの基本的操作open、close、read、write、readline、writeline、readlines、writelines。
- ファイルオブジェクトが破棄されると自動でクローズされる。
- とりたてて注目すべきところは無い気がする。
.
0 コメント:
コメントを投稿