2016-05-31 14 views
4

Ich muss Zeilen an eine CSV-Datei anhängen. Jede Zeile enthält einen Vektor von ganzen Zahlen. Vektoren, die hinzugefügt werden sollen, werden im Flug erzeugt, und ich kann nicht im Voraus sagen, wie viele Zeilen hinzugefügt werden.
Ich habe versucht, Folgendes zu tun, aber es scheint keine CSV-Datei zu erstellen, noch enthält es jedes Element in einer separaten Zeile.So fügen Sie Zeilen zu einer .csv-Datei hinzu

s = open("testfile.txt", "a") 

for i in 1:5 

    x = rand(Int8, 10) 
    writecsv(s, x) 

end 

close(s) 

Jede Hilfe wird geschätzt!

Antwort

8

Also, wissen Sie, wie zu erstellen oder zu überschreiben, eine CSV-Datei mit diesem:

x = [1 2 ; 3 4 ; 5 6] 
filePath = "/someAbsolutePath/temp1.csv" 
writecsv(filePath, x) 

Wenn Sie eine neue Zeile (oder mehrere Zeilen in einem Treffer) anhängen möchten, können Sie auch writecsv verwenden können aber zuerst müssen Sie die Datei explizit im Append-Modus öffnen und dann die resultierende Dateikennung als erstes Argument auf writecsv setzen. Fortsetzung des obigen Beispiels:

fid1 = open(filePath, "a") 
writecsv(fid1, [7 8]) 
close(fid1) 

Ich glaube nicht, writecsv automatisch close die Datei nach Abschluss, wenn die erste Eingabe eine Datei-Kennung ist, so ist die letzte close Aussage sehr wichtig. Alternativ können Sie die von @ShaoWeiTeo in den Kommentaren vorgeschlagene Version verwenden, um eine automatische close zu erhalten.

+4

Wir können auch die 'open (f :: Funktion, Befehl, mode :: AbstractString =" r ", stdio = DevNull)' Version verwenden, die die Verbindung nach dem Schreiben automatisch schließt. Ich bevorzuge das eher manuelle Schließen, und es ist eine mehr julianische Art, Dateien zu öffnen, denke ich ... –

+0

Danke Colin und ShaoWei für deine Antworten. Das war, was ich suchte. Sehr geschätzt! Ich habe jetzt auch gelernt, dass writecsv() die UNIX-Philosophie für neue Zeilen verwendet, auch auf meinem Windows-System. – InkPen

Verwandte Themen