独学プログラマー9章読んでみた:ファイル
水曜日に書いた記事上げ忘れてました。。
今日は一人でカメラを止めるな
をみてきました。めっちゃ面白かった!!!
平日のど真ん中の昼間なのに
すごい人多くて、ほぼ満席だったので
しょうがなく間の空いてる席取ったら
嫌な予感的中で両隣カップルでした。。。
けどめげずに一人でビアセット持って
映画を楽しみました。。。
もう一回見にいきたい!
8章はモジュールの話で短く
まとめておくことなさそうだったので
飛ばしま〜〜〜す!
ファイル操作
流れとしては
- ファイルを開ける
- 書き出す or 読み込む
- ファイルを閉じる
という流れです。
扉を開けたら締めなければいけないのと
おんなじですね。開けっ放しだときちんと
動作しなくなる危険性があるらしい。
そしてファイルを開けるときに
指定しなければいけないのが操作内容です。
- "r":読み込み専用
- "w":書き出し専用
- "w+":読み書き両方
書き出す時は
変数名 = open( "ファイル名.txt" , "w" , encording = "utf-8" )
変数名 . wirte( "Pythonからこんにちは" )
変数名 . close
というように書きます。
encording = "utf-8"と指定しているのは
日本語文字列が含まれている場合にも
きちんと動作するようにするためです。
英語文字列だけとわかっている時は書く必要なし。
上では書き出し専用の"w"を指定しています。
with関数:ファイルを自動的に閉じる
上でごちゃごちゃ言いましたが
ファイルを自動的に閉じてくれるのが
with関数です。優秀。
これをファイルのオープンに使うと
with関数を抜けるときに自動でファイルを
閉じてくれるというものです。
上で書いた例と同じ動作をするコードを書くと
with open( "ファイル名.txt" , "w" , encording = "utf-8" ) as 変数名 :
変数名 . write("Pythonからこんにちは" )
となります。2行で書けちゃいました。
これだけで先に書いたコードと同じ
動きをしてくれます。こっちを使おう。
CSVファイル
スプレッドシートで扱い、このデータは
スプレッドシート上ではセルと言われる単位です。
CSVファイルを開く時もwith関数を使えます!
この時CSVモジュールをimportして
便利なメソッドを使います。
- writerメソッド :ファイルオブジェクトとデリミタ(区切り文字)
を受け取ってCSVオブジェクトを返す - writerowメソッド:引数としてリストを受け取り
CSVファイルに書き出す - readerメソッド :ファイルオブジェクトとデリミタに使用する
文字列を指定し1行単位で返す
本では、この2つが紹介されていました。
writerowメソッドは1回の呼び出しで1行書き出すので
数行書き出したい場合はその回数分呼び出す
必要があります。
コードのはじめに"import csv"と書き
csvモジュールを使えるようにします。
- 書き出す時のコード例
with open( "ファイル名.csv" , "w" ) as 変数名1 :
変数名2 = csv.writer( 変数名1 , delimiter = ",")
変数名2.writerow( ["one" , "two" , "three" ] )
変数名2.writerow( ["four" , "five" , "six"] )
- 読み込み時のコード例
with open( "ファイル名.csv" , "r" ) as 変数名1 :
変数名2 = csv.reader( 変数名1 , delimiter = ",")
for row in 変数名2:
print( ",". join ( row ) )
という感じです。
6章の文字列操作で使ったjoinメソッドがここでも
役に立ってる!!
終わり
まだチャレンジ問題やってないので
明日にでもコード書いて動作を確認したい〜
もっと進んでるはずなのに院試終わってから
グータラしすぎて全然進んでない。。。
あ!けど大学院第一志望の研究室に
ギリギリ無事受かりました〜やっぴ〜〜
頑張って数学勉強した甲斐がありました。
もう内容はほとんど忘れました。