いももちのきもち

新米プログラマによる技術的メモ

csvモジュールを利用してファイルを書き込む

toricor.hatenablog.com
上の記事とセットの記事です。
今度はcsvファイルに書き出します。

ファイルをオープンするときにファイルモードを指定します。読み込み用はrでした。
書き込み時はwとaが主に使われます。
・wはファイルが存在しなければ新しく作ります。すでに存在すればファイルサイズを0に切り詰めてから書き込み用にオープンします(上書き)。
・aはファイルが存在しなければ新しく作ります。すでに存在すれば末尾からファイルに書き込みます(追記)。

さて、csvモジュールのファイルへの書き込み関数では、csv.writerow()とcsv.writerows()がありますので違いを見ていきます。

# -*- coding: utf-8 -*-
ls = ['id', 'chromosome', 'physical_position']

import csv
with open('output.csv', 'wb') as g:
    c = csv.writer(g)
    c.writerow(ls)  # リストを一行ずつ書き込む

output.csv

id,chromosome,physical_position

for文などを用いて複数回writerowを使えば複数行を書き込めますが、そういう場合には以下の書き方ができます。

ls2 = [['id', 'chromosome', 'physical_position'],
['WBVar00010869', 'IV', '6377485'],
['WBVar00010872', 'V', '11574082'],
['WBVar00020875', 'V', '15406647']] #二重リスト

import csv
with open('output2.csv', 'wb') as g:
    c = csv.writer(g)
    c.writerows(ls2)  # リストをまとめて書き込む

output2.csv

id,chromosome,physical_position
WBVar00010869,IV,6377485
WBVar00010872,V,11574082
WBVar00020875,V,15406647