programing sisters 姉

プログラミングを学習するブログです

独学プログラマー9章読んでみた:ファイル

 

水曜日に書いた記事上げ忘れてました。。

 

今日は一人でカメラを止めるな

をみてきました。めっちゃ面白かった!!!

平日のど真ん中の昼間なのに

すごい人多くて、ほぼ満席だったので

しょうがなく間の空いてる席取ったら

嫌な予感的中で両隣カップルでした。。。

けどめげずに一人でビアセット持って

映画を楽しみました。。。

 

もう一回見にいきたい!

 

8章はモジュールの話で短く

まとめておくことなさそうだったので

飛ばしま〜〜〜す!

 

ファイル操作

 

流れとしては

  1. ファイルを開ける
  2. 書き出す or 読み込む
  3. ファイルを閉じる

という流れです。

扉を開けたら締めなければいけないのと

おんなじですね。開けっ放しだときちんと

動作しなくなる危険性があるらしい。

 

そしてファイルを開けるときに

指定しなければいけないのが操作内容です。

 

  • "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ファイルはデータが区切られていてExcelなどの

スプレッドシートで扱い、このデータは

スプレッドシート上ではセルと言われる単位です。

 

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メソッドがここでも

役に立ってる!!

 

 

終わり

 

まだチャレンジ問題やってないので

明日にでもコード書いて動作を確認したい〜

 

もっと進んでるはずなのに院試終わってから

グータラしすぎて全然進んでない。。。

 

あ!けど大学院第一志望の研究室に

ギリギリ無事受かりました〜やっぴ〜〜

頑張って数学勉強した甲斐がありました。

もう内容はほとんど忘れました。