2017-08-03 119 views
0

我正在收集一个USB设备的数据,并获取2组数据作为一个变量,其中包含200个数据点作为逗号分隔的字符串。我怎样才能将这些变量保存为我的电脑上的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