雑魚の備忘録

こまごました事の寄せ集め

PythonでCSVファイル出力

CSVファイルにデータ列を書き込む

CSV出力のためにはたとえば次。


fl=100.0
import csv
with open('test.csv','a') as f:
    writer = csv.writer(f)
    writer.writerow(['fl=',fl])

ここで次のようにwriterowの後を一重カッコにしてしまうと怒られ手上手くいかない。


    writer.writerow('fl=',fl)

コンソールに、TypeError: writerow() takes exactly one argument (2 given) と出てきた。

そして2個1組のデータ列を素直にfor文で出力しようと思って、


import numpy as np
fl=100.0
z=np.arange(-fl,fl,0.1)
w=pow(z,2)

import csv
with open('test.csv','a') as f:
    writer = csv.writer(f)
    writer.writerow(['fl=',fl])
    writer.writerow(['z','w'])
    for j in range(0,len(z)-1):
         writer.writerow([z[j],w[j]])

こう書いたら、以下のように空行が挟まれる。

f:id:mzkch:20180420185739p:plain

これを直すには、次のようにopenのところにおまじないを追加すれば良い。


import numpy as np
fl=100.0
z=np.arange(-fl,fl,0.1)
w=pow(z,2)

import csv
with open('test.csv','a',newline='') as f:
    writer = csv.writer(f)
    writer.writerow(['fl=',fl])
    writer.writerow(['z','w'])
    for j in range(0,len(z)-1):
         writer.writerow([z[j],w[j]])

実行環境

Python3.6

jupyter

Excel2013