2017-12-11 5 views
0

私はPythonが初めてです。私はCSVファイルに数字を書き込もうとしています。最初の数値は行の最初の要素を作成します。 2番目の秒数を入力し、新しい行を開始する必要があります。しかし、同じ行に2番目の要素を追加する代わりに、私のコードが動作する方法は、新しい行を作成します。例えばCSVライターは各入力値の次の行に移動します

私がしたいことは次のとおりです。

a1,b1 
a2,b2 

しかし、私が得ることである:

a1 
b1 
a2 
b2 

私は継続的にCSVファイルに値を書き込むためにループを使用します。

n = Ratio # calculated in each loop 
with open('ex1.csv', 'ab') as f: 
    writer = csv.writer(f) 
    writer.writerow([n]) 
    ... 

m = Ratio2 # calculated in each loop 
with open('ex1.csv', 'ab') as f: 
    writer = csv.writer(f) 
    writer.writerow([m]) 

結果は

の形式になります。ファイルへの書き込み、その後、戻ってそれを読んで、それを印刷するため
n1,m1 
n2,m2 
+1

はその後一緒に 'N'と 'M'に参加、すなわち 'writer.writerow([N、M])あなたのように区切り文字を指定する必要があります' – zwer

+0

'' – johnashu

+0

A [Clomplete minimal example](https://stackoverflow.com/help/mcve)は、問題をより簡単に再現するのに役立ちます。 – Nogoseke

答えて

1

例:

import csv 

with open('ex1.csv', 'w') as f: # open file BEFORE you loop 
    writer = csv.writer(f)  # declare your writer on the file 

    for rows in range(0,4):  # do one loop per row 
     myRow = []    # remember all column values, clear list here 
     for colVal in range(0,10): # compute 10 columns 
      m = colVal * rows  # heavy computing (your m or n) 
      myRow.append(m)   # store column in row-list 

     writer.writerow(myRow) # write list containing all columns 

with open('ex1.csv', 'r') as r: #read it back in 
    print(r.readlines())   # and print it 

が出力:

['0,0,0,0,0,0,0,0,0,0\r\n', '0,1,2,3,4,5,6,7,8,9\r\n', '0,2,4,6,8,10,12,14,16,18\r\n', '0,3,6,9,12,15,18,21,24,27\r\n'] 

0,0,0,0,0,0,0,0,0,0 
0,1,2,3,4,5,6,7,8,9 
0,2,4,6,8,10,12,14,16,18 
0,3,6,9,12,15,18,21,24,27 

のファイルあなたに変換また、各行のリスト(myList[:]でコピー)を別のリストに入れて、writer.writerows([ [1,2,3,4],[4,5,6,7] ])をwrに使用することもできます1つの行にすべての行を表示します。

参照:https://docs.python.org/2/library/csv.html#writer-objectshttps://docs.python.org/3/library/csv.html#writer-objects

関連する問題