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)を使用して、一括で書き込み。 この方が断然便利ですね!
- 作者: Mark Lutz,夏目大
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/02/26
- メディア: 大型本
- 購入: 12人 クリック: 423回
- この商品を含むブログ (124件) を見る