基本的なファイル操作
ファイル操作の手順は
1.ファイル開く(オープン)
2.ファイル弄る(読んだり、書いたり)
3.ファイル閉じる(クローズ)
ファイルのオープンにはfile()を使う。
書式は、
file("ファイル名", "フラグ")
open("ファイル名", "フラグ")は、file("ファイル名", "フラグ")でもOK*1
フラグでファイルモードを指定。
r 読み取り専用 w 書き込み専用 a 追加(ファイルを開く時、ファイルの参照点は自動的にファイルの末尾に移動する) r+ 更新(読み取りと書き込み) w+ ファイルを切り捨て(空にし)た後、そのファイルを読み書き用に開く a+ ファイルを読み書き用に開く、参照点は自動的にファイルの末尾に移動 b 他のオプションと一緒に指定すると、ファイルをバイナリモードで開く
練習用のテキストファイルを作る(text.txt)
1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ あいうえおかきくけこさしすせそ
ファイルは現在作業中のフォルダ(カレントディレクトリ)に保存することとする。
現在作業中のフォルダを知りたい時は以下
>>> import os >>> print os.getcwd()
作業中のフォルダを変更したい時は以下
>>> import os >>> os.chdir("c:\\")
Python Shell 上では¥記号は\(バックスラッシュとして表示される)→os.chdir("c:\\")
▼Python Shellで読み出しの練習
用語:ファイルポインタ(現在の読み込み、書き込み位置)
>>>f = file('text.txt','r') #text.txtをopen >>>f.readlines() #ファイルの中の行すべてを含んだリストを返す ['1234567890 ', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ ', 'あいうえおかきくけこさしすせそ'] >>>f.readline() #ファイルから1行だけ読み取る '' #readlinesの後なのでポインタがファイルの終端に >>>f.tell() #ポインタの現在位置 106L >>>f.seek(0) #ポインタをファイルの先頭に移動 None >>>f.tell() #ポインタがファイルの先頭に戻っているか確認 0L >>>f.readline() #もう一度ファイルから1行だけ読み取る '1234567890 ' >>>f.readline() #続けて一行 'ABCDEFGHIJKLMNOPQRSTUVWXYZ ' >>>f.readline() #さらに一行 'あいうえおかきくけこさしすせそ ' >>>f.readline() #最後 '' >>>f.seek(0) #ポインタをファイルの先頭に移動 None >>>f.read(10) #10バイト分読む '12345' >>>f.read(10) #続けて10バイト分読む '67890' >>>f.seek(0) #ポインタをファイルの先頭に移動 None >>>f.read(2) #一文字(全角なので2バイト)だけ読む '1' >>>f.seek(10,0) #ファイルの先頭から10バイト分、ポインタを移動 >>>f.read(2) '6' >>>f.seek(20,1) #現在の位置から20バイト分、ポインタを移動 >>>f.read(2) 'F' >>>f.seek(-2,2) #ファイルの終端から2バイト分前へポインタを移動 >>>f.read(2) 'そ' >>>f.close() #ファイルを閉じる
ファイルに書き込むにはf.write(string)
text.txtに「abc」を追加してみる
>>>f = open('text.txt','a') >>>f.write('abc\n') #ファイルに追加するときは\n(改行コード)を最後に付ける None >>f.close()
text.txtを開くと
1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ あいうえおかきくけこさしすせそabc
となっているはず。
参考:
7.2 ファイルを読み書きする
http://www.python.jp/doc/release/tut/node9.html#SECTION009200000000000000000
2.3.8 ファイルオブジェクト
http://www.python.jp/doc/release/lib/bltin-file-objects.html