2017-08-03 1 views
0

Ich sammle Daten auf einem USB-Gerät und bekomme 2 Sätze von Daten als eine Variable, die 200 Datenpunkte als durch Komma getrennte Strings enthält. Wie kann ich diese Variablen als CSV-Dateien auf meinem Computer speichern? Idealerweise würde ich das gerne in einer Funktion machen, weil ich dies für viele Datensätze effizient wiederholen möchte, ohne sie zu überschreiben.Liste der Zeichenfolgen in csv-Datei speichern?

Hier ist meine aktuellen Code:

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) 

So, nachdem das ist, wo ich möchte eine Datenspeicherfunktion schaffen, die ich anrufen kann, und wiederholen Sie für die spätere Datensätzen. Jede Hilfe ist willkommen, danke!

Antwort

0

Sie können das Modul csv aus der Python-Standardbibliothek zum Schreiben von CSV-Dateien verwenden.

Um bei jedem Speichern von Daten eine neue Datei zu generieren, können Sie einen Dateinamen mit einer Nummer generieren. Erhöhen Sie die Anzahl, bis die Datei noch nicht existiert. Hier ist eine Funktion, die Daten fortlaufend zu prefix_1.csv sparen, prefix_2.csv, und so weiter:

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

Ich landete mit 'np.savetxt' meinem Problem zu lösen, aber das funktioniert auch - danke! Haben Sie einen Rat zum Erstellen einer Funktion hier, so dass ich mehrere Datensätze speichern und nichts überschreiben kann (d. H. Ihnen eindeutige Namen geben, ohne das Programm erneut aufrufen und selbst ändern zu müssen)? (Rest des Codes zu Frage hinzugefügt) –

+0

Geändert, um 'csv.writer' zu verwenden –

+0

Ich verbesserte die Antwort zu veranschaulichen, wie die Daten in einer neuen Datei bei jedem Aufruf gespeichert werden können. – r0the

Verwandte Themen