|
ホーム 戻る
第11章 ファイルの読み書き、そして覚えておきたいあること
" 峨眉山月半輪秋 影入平羌江水流 夜発清溪向三峡 思君不見下渝州
李白"
” 事例で理解する ”
1.何かをする、と言うこと
今まで対話式でpythonIDLE又はpython(comandline)にコードを入力して短いプログラムを実行してきました。仕事を終わるとコードは消えてしまい、再利用はできません。
そこで、メモ帳かxyzz.ezeあるいはIDLE付属のediterを起動して、コードを書いて、pythonファイルい保存し、呼び出して使用すれば、再利用が可能になります。下記はすべてIDLEの機能を使う方法を学びます。
(a) IDLE(python)を使う(python統合環境)に付属する、エディターでコードを書く.. pytmpファイルに保存する。たとえば名前はtest_string.pyとする IDLE(python)を開く。 file openをクリックする。 pytmpファイルからtest_string.pyを開く。 runをクリツクする。 run mojule f5をクリックする。
(b)python(comandline)コマンドラインインタプリタを使う
ユーザによるテキスト入力によりコンパイラに指示を出す方法:マウスポインタやクリ ックを使わない。
ファイルtest.pyをopenする
test1.pyのスクリプト以下のとおり
# stream of programing # scripting code # checking code # run test1.py print 'hello python '
ファイルを読む
>>> import sys >>> f = open("test1.py") fに open組込関数でfileを読み込む >>> f fの内容確認 <open file 'test1.py', mode 'r' at 0x00AFBB18> >>> x = f.read() ()内に数値を入れないで全体をreadメソッド で読み込む:前にfが付く。:メソッドである。 >>> x xの内容を表示する。
"# stream of programing\n# scripting code\n# checking code \n# run tst1.py\nprint 'hello python '\n" ¥nが5っあり5行の情報である。
>>> f.close() >>> f <closed file 'test1.py', mode 'r' at 0x00CD11D0>
2・コンピュータに関するあること
(a)名前付けのルール(命名規則)
変数名:短くてわかりやすい 単語をアンダースコアで区切るか 単語の先頭だけ大文字にする クラス名は大文字ではじめる 定数名はすべて大文字 変数名は小文字:アルファベット、数字、アンダースコアの組み合わ せ:日本語は使えない:ドット・カンマ・空白は使え ない:はじめの一文字は、アルファベットかアンダ ースコア:予約語は使えない。:大文字と小文字 は区別 一般的な変数名:a,b,c... :x,y,z.... ファイルオブジェクト:f,g.... 複数行のリスト:lines 文字列を示す:s 整数:n ループ変数など:i,j,k... バイナリ:b
3.バックアップをとる。
ファイルサーバーに。別のコンピュータに。テープに。
4.セーブとロード
ファイル:osがコンピュータ上でのデータ管理に使用する単位 :ファイルには名前が付けられる。pythonの場合拡張子として.py をつける。boki.py
ファイルオブジェクト:ファイルへのアクセスに使用されるオブジェクト :マシン上に存在するファイルへのリンク機能 :対応するファイルへのデータの書き込み、ファイルから のデータの書き込み :openビルトイン関数を使用 :基本的なファイル操作のためのメソッドを提供するオブ ジェクト
open関数の引数:1.開くファイル名2.処理モード
処理モード:1.’r ’出力モード 2.’a ’データ追加モード 3.デフォルトは’r’ 4’w’書き込みモード
ファイル名指定:絶対パス名、相対パス名両方指定できる。
ファイルのテキスト:pythonプログラムの中では、すべて文字列
引数はすべて文字列にする。 書き込みの基本的操作: output=open('/tmp/spam','w') 出力ファイル作製 open関数
input=open('data','r') 入力ファイル作成
s=input.read() ファイル全体を読み込みs文字列にする readメソッド:input.のあとに付く。 s=input.readlines() 行末記号まで行を読み込む
s=input.readlines() ファイル全体を読み込み、各行の内容が それぞれリストを構成する。 output.write(S) 文字列sをファイルに書き込む
output.writelines(L) リストLの文字列をすべてに書き込む
output.close() ファイルのクローズ
例1
myfile=open('myfile','w') myfile.write('hello text file /n') myfile.close()
>>> myfile=open('myfile','r') >>> myfile.readline() 'hello text file /n'
(例2)
menu.txtというファイルが保存してあるとする。 spam & eggs spam & chips spam & spam
このファイルを読み取って画面に表示するプログラム。 imp=open("menue.txt","r") 読み取るファイルを開く
引数r:読み取り専用 引数w:書き専用 引数デフォルトASCIIテキストで開く
for line in imp.readlines(): ファイルを読み込み、表示する print line
imp.close() ファイルを閉じる
例3
old_inventory=('old_inventory','w')
new_inventory=('new-inventoryt','w')
old_inventory=5
new_inventory=10
print 'The following files have been added :'
print new_inventory - old_inventory
print ''
print 'The following files have been deleted :'
print old_inventory - new_inventory
old_inventory=('old_inventory','w')
new_inventory=('new-inventoryt','w')
>>> The following files have been added : 5
The following files have been deleted : -5
5. ファイルの扱いをすべてIDLEで実行する場合
ワープロと同じ。まず開いて、何らかの作業を行い、最後に閉じる。 ファイルへのアクセスはシーケンシャル。 プログラムファイルは先頭から開始して、一行づつ読みとる。 ファイルを閉じるときは、文書の先頭から書き出す。 ファイルを編集している間は、ファイル全体がメモリに置かれている。 ファイルは読み取り専用か書き込み専用でしか開けない。 プログラミングでファイルに書き込みをするには、新規ファイルを作るか、既存ファイルに上書きするか、既存ファイルの末尾に追加する。
(a)入力ファイルと出力ファイル
(例1)エディターでプログラムを書くpython25pytmpに保存: ファイル名:misonikomi.pyとする。
print '味噌煮込みうどん' print '材料一人前' print 'うどん玉、赤味噌、卵、かしわ' print 'お好みで、かまぼこ、油揚げ、ほうれん草・・・)' print '作り方 ' print '土鍋に水とダシ' print 'かしわを入れる' print '赤味噌を濃い目にとく' print '味噌汁がぐつぐつ、うどん玉一個' print '玉をほぐして、お好みをいれる' print '卵を割ってふた' print '二三分したら、さあ召し上がれ'
IDLELからFile open run mojule5 クリック
python25pytmpのなかのmisonikomi.pyをクリック
味噌煮込みうどん 材料一人前 うどん玉、赤味噌、卵、かしわ お好みで、かまぼこ、油揚げ、ほうれん草・・・) 作り方 土鍋に水とダシ かしわを入れる 赤味噌を濃い目にとく 味噌汁がぐつぐつ、うどん玉一個 玉をほぐして、お好みをいれる 卵を割ってふた 二三分したら、さあ召し上がれ
(b)大きいファイルの扱い方
readline() line_count変数
enterキーが押されるまで待機するようにする。 押されたらline_countを0にする。
(c)別のファイルを取り込む
あるプログラムで作った自作メソッドを別のプログラムで利用
ライブラリ:他のファイルから読み込んで利用するためのプログラム
rubyの例
hello。rb helloメソッド定義ファイル
use_hello。rb helloメソッド利用プログラム
それぞれ同じディレクトリに作成:use_helloでhelloメソッドを呼び出す
(d)既存ファイルの修正
(e)ファイルへのデータの追加
6 使用頻度の高いコーディングテクニック
(a) dir関数:で調べた関数のうち、_、__などで始まる特殊関数は通常使用しな い。
それらを除くと
append,count,extend,index,insert,pop,remove,reverse,sort,
help():オンラインヘルプシステムで情報が得られます。
(b)型変換
例 >>> int(1.0) 1 >>> int(1.4) 1 >>> int(1/9) 0 >>> int(1.9) 1 >>> round(1.9) 2.0
>>> int(round(1.9)) 2
型変換ビルトイン関数
>>> list("tomato") ['t', 'o', 'm', 'a', 't', 'o']
>>> list((1,2,3)) [1, 2, 3]
>>> tuple("tomato") ('t', 'o', 'm', 'a', 't', 'o')
>>> tuple([0]) (0,)
>>> dict() {}
>>> dict([('a',2),('b',5)]) {'a': 2, 'b': 5}
>>> dict(a=2,b=5) {'a': 2, 'b': 5}
>>> int("3") 3
>>> long("3") 3L
>>> float("3") 3.0
>>> ord('a') 97
>>> chr(65) 'A'
>>> min([5,1,2,3,4]) 1
>>> max([5,1,2,3,4]) 5
(c)正規表現:複雑なパタンマッチングや文字の置き換えを支持する文字列
reモジュール
正規表現で利用するパターン文字列
。 あらゆる文字列 ^ 文字列の先頭文字 ^red red ribbons are good $ 文字列の末尾の文字 I love red$ \d 数字とマッチ \D 数字以外とマッチ \s 空白文字列とマッチ \S 空白文字列以外とマッチ \w 大文字、小文字を含む英数字とマッチ \W 英数字以外とマッチ
(d)ファイルの読み書き
IDLEを開く
(1)ファイルを作る
NEW WINDOW をクリック
'青年よ 大志を 抱け' 入力する。
runをクリック
run mojule f5をクリック
data3.pyの名前で保存
(2)ファイルを開く
>>> g =open('data3.py','r') >>> g <open file 'data3.py', mode 'r' at 0x00AFBB18> >>> x =g.read() >>> print x '青年 よ 大志を 抱け'
(3)ファイルを作って書き込む
>> g=open('data2.py','w') g変数に書き込みファイルを開く >>> g <open file 'data2.py', mode 'w' at 0x00AFBB60> >>> g.write('心に太陽を') 書き込む >>> g.close() ファイルを閉じておく >>> h = open('data2.py','r') 呼び出して書き出す >>> y = h.read() >>> h.close() ファイルを閉じておく >>> print y 心に太陽を >>>
ホーム 戻る
|