ファイル操作・ディクショナリ操作のメモ
ファイル読み込み
コード内で既に存在しているファイル(例えばinput.txt)を開きたい時に,
f = open("input.txt").readlines() とやっても, g = [line for line in file("input.txt")]
とやっても結果は同じ.
というかfileとopenの違いが分かりませんでしたw
ちなみに
open("input.txt", "r")
と書くのが一応丁寧で見易い.めんどくさいけど.
また,上の場合のようにメソッドを用いて読み出すとき,
f = open("input.txt") _f = f.readlines()
としても良いが,
f.close()
を忘れないようにする.
もちろん
with open("input.txt") as f: for line in f: print line
のようにwith文を用いても良い.
読み込み時に用いるメソッドとして
- read():1文字ずつ全て取得して各文字ごとにリストに格納する
- readline():1行だけ取得
- readlines():1行ずつ全て取得して各行毎にリストに格納する
の三つがあるが,基本的にはreadlines()だけで事足りるかと.
ファイル書き込み
書き込みには
- 新規作成したファイルに対する書き込み
- 存在するファイルに対する書き込み
の2つがあり,それぞれ
f = open("new_input.txt", "w") g = open("input.txt", "a")
としてファイルを書き込みモードで開いて
f.write("Hello World!!!") g.write("Hello World!!!")
とでも書けば,new_input.txt, input.txtの2つのファイルの
末尾にそれぞれHello World!!!と書き込まれる.
ちなみに "a" オプションでも新規作成は出来ますw
ここでも
f.close() g.close()
を忘れないこと.
...pythonは勝手にファイルを閉じてくれますけどね...
setdefaultメソッド
python使ってて辞書型配列を使うときに,
- このキーもうあるのかな...?無いなら新しく値を入れたいんだけど...
という時に使えるのがsetdefaultメソッドということです.
setdefalut(key, value)
今から新しく作ろうとするキーを第1引数としてとり,
そのキーが既に存在すれば何もしない.
存在しなければそのキーを新しく作り,第2引数の値を格納する.
という機能.
例を挙げてみると,
>>> dict = {'tom':180, 'jim':170, 'mary':155} >>> dict['tom'] 180 #tanaka君のデータ入れたっけ? >>> dict['tanaka'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'tanaka' #無かったから入れよう >>> dict['tanaka'] = 165 >>> dict {'tanaka': 165, 'jim': 170, 'mary': 155, 'tom': 180}
という流れが
#jim君のデータ入ってなかったら180にしよう >>> dict.setdefault('jim', 180) 170 #170という値が入ってたから変更なし. #次にroger君のデータが入ってなかったら190にしよう >>> dict.setdefault('roger', 190) 190 >>> dict {'tanaka': 165, 'jim': 170, 'roger': 190, 'mary': 155, 'tom': 180}
こんな感じに.便利.