2017-08-03 9 views
0

私はusbデバイス上のデータを収集しており、カンマ区切りの文字列として200データポイントを含む変数として2セットのデータを取得しています。これらの変数をコンピュータにCSVファイルとして保存するにはどうすればよいですか?理想的には、多くのデータセットをオーバーライドしなくても、これを効率的に繰り返すために、関数内でこれを実行したいと考えています。csvファイルに文字列のリストを保存していますか?

は、ここに私の現在のコードです:これは私が私が呼ぶと、後でデータセットのために繰り返すことができセーブデータ関数を作成したいところである

freq = instr.ask("FREQ:DATA?") 
data = instr.ask("CALC:DATA:FDATa?") 

#convert freq and data to strings comma-separated and then arrays of floats 
datalist=data.split(',') 
dataarray=np.array(datalist) 
datafloat=dataarray.astype(np.float) 

freqlist=freq.split(',') 
freqarray=np.array(freqlist) 
freqfloat=freqarray.astype(np.float) 

#save data 
output = np.column_stack((freqfloat, datafloat)) 
with open('output.csv','w') as f: 
    writer = csv.writer(f) 
    for row in output: 
     writer.writerow(row) 

ので、後。どんな助けも歓迎です、ありがとう!

答えて

0

Python標準ライブラリのcsvモジュールを使用して、csvファイルを書き込むことができます。

データを保存するたびに新しいファイルを生成するには、番号の付いたファイル名を生成できます。ファイルがまだ存在しなくなるまで番号を増やします。ここではそうでprefix_1.csvprefix_2.csvに連続してデータを保存する関数があり、かつ:

import csv 
import os 

def save_csv(file_prefix, data): 
    i = 1 
    file_name = file_prefix + '_' + str(i) + '.csv' 
    while os.path.isfile(file_name): 
     i = i + 1 
     file_name = file_prefix + '_' + str(i) + '.csv' 

    with open(file_name, 'w') as csvfile: 
     writer = csv.writer(csvfile) 
     for row in data: 
      writer.writerow(row) 

# Save output to file data_x.csv 
output = np.column_stack((freqfloat, datafloat)) 
save_csv('data', output) 
+0

私は私の問題を解決するために、 'np.savetxt'を使用して終了しますが、これはあまりにも動作します - あなたに感謝します!ここで関数を作成して複数のデータセットを保存し、何も上書きしないようにアドバイスしていますか?つまり、プログラムに戻って自分で変更することなく一意の名前を付けることができますか? (残りのコードは質問に追加されました) –

+0

'csv.writer'を使用するように変更 –

+0

私は、すべての呼び出しでデータを新しいファイルに保存する方法を説明するために答えを強化しました。 – r0the

関連する問題