Pythonの学習の過程とか

学習の記録をつけておきましょう。Python3に少しずつ移行していきます。過去の記事のソースを2から3に、、、と考えましたが、新しいことをやったほうがいいですね。

Pythonの基礎 ファイル(CSV)に書き込む編

Pythonの基礎 CSVに書き込んでみる

読み込みはなんとなくできたので、次は書き込みにチャレンジ。

リストを作り、それを書き込んでいく

とりあえずサンプルはこんな感じです。

#coding:utf-8
import csv

f = open('data.csv', 'ab') #ファイルが無ければ作る、の'a'を指定します

csvWriter = csv.writer(f)

val = 0
for num in range(1, 5):
   listData = []            #listの初期化
   val = num
   listData.append(val)                      #listにデータの追加
   for loop in range(0, 5):
      val = val * 10 + num
      listData.append(val)
   csvWriter.writerow(listData)          #1行書き込み

f.close()
#作成されたdata.csvの中身
1,11,111,1111,11111
2,22,222,2222,22222
3,33,333,3333,33333
4,44,444,4444,44444

書き込みにはcsv.writerを使う

csvWriter = csv.writer(f)

ファイルオブジェクトを引数に指定します。

もっとスマートなやり方もありますが、とりあえずはこれでいいかと思います。

では中身を見ていきますと。。。。。

リストを作り、writerrow()で1行を書き込む

何をしているかというと、

  • listを初期化する
  • list1行分のデータを追加する list.append(val)
  • writerrowで書き込む

これだけですね。

次の行のために、初期化も忘れないこと。list = []

writerrows()を使ってみる

writerrow()では1行の書き込みになります。

これだと行の度に書き込みしなければなりませんね。

listにデータを溜め込んでおいて、一気に全部書きこんでみましょう。

その前に、現在の一次元配列ではなく、二次元配列にする必要があるようです。

csvの1行ごとに配列を作るわけですね。

これにより、writerwors()で一気に書き込みができるようになります。

では以下のサンプルを見てください。

#coding:utf-8
import csv

f = open('writeData2.csv', 'ab')
dataWriter = csv.writer(f)

val = 0
rowList = []
for num in range(1, 5):
        val = num
        rowList.append([])              #空の配列を追加する
        rowList[num-1].append(val)        #配列にデータを追加していく
        for mul in range(0, 5):
                val = val * 10 + num
                rowList[num - 1].append(val)

#下の行のコメントを外してみると、どんな配列ができたのかが分かります。
#print rowList                 
dataWriter.writerows(rowList)
f.close()
#コメントを外したときの表示
#見やすいように改行をいれてありますが、実際の表示には改行はありません。
[ [1, 11, 111, 1111, 11111, 111111], 
  [2, 22, 222, 2222, 22222, 222222], 
  [3, 33, 333, 3333, 33333, 333333],
  [4, 44, 444, 4444, 44444, 444444]
]

表示を見ると分かりやすいですね。 最初のforでひとつずつ配列を追加します。 その後、中身を書き込むだけですね。

そして最後にwriterrows(rowList)を使用して、一括で書き込み。 この方が断然便利ですね!

初めてのPython 第3版

初めてのPython 第3版