Frage

Mit dem folgenden Code erhalte ich die richtigen Informationen für die Datei.Hier ist der Code:

filename = raw_input('What would you like to name the file? ')

import csv

data = [frames]
out = csv.writer(open(filename,"w"), delimiter=' ',quoting=csv.QUOTE_MINIMAL)
out.writerows(data)

Dadurch wird etwas generiert, das in einer Textdatei so aussieht:

"[255   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   0   0]" "[  0 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171
 171 171]" 

Ich möchte, dass die Informationen so aussehen:

255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 []0 255 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Die beiden Klammern stellen ein Zeichen dar, das auf eine neue Informationszeile hinweist.Es ist ein kleines Rechteck in meinem Texteditor und ich bin mir nicht sicher, um welches Zeichen es sich handelt.

Wie entferne ich also die Anführungszeichen und Klammern und verwende dieses andere Zeichen?

BEARBEITEN:

Ich habe versucht, den folgenden Code zu verwenden und habe die folgende Fehlermeldung erhalten:

Traceback (most recent call last):   
  File "(stdin)", line 1, in (module)   
  File "backandforth3.py", line 154, in (module)
    out.write(' '.join(frame)) 
Type Error: sequence item 0: expect string, numpy.int32 found
War es hilfreich?

Lösung

Ich gehe davon aus, dass Sie Notepad als Texteditor verwenden?Zeilenumbrüche im Unix-Stil (\n) werden im Editor als Kästchen angezeigt, da nur Windows-Zeilenumbrüche unterstützt werden (\r\n).Das heißt, dies sollte die erwartete Ausgabe liefern:

filename = raw_input('What would you like to name the file? ')

with open(filename, 'wb') as out:
    for frame in frames:
        out.write(' '.join(str(num) for num in frame))
        out.write('\r\n')

Es gibt keinen Grund zum Einpacken frames in einer anderen Liste;Unter der Annahme, dass es sich bei der Variablen um eine Liste von Zahlenlisten handelt, wie die erwartete Ausgabe vermuten lässt, sollte dies einwandfrei funktionieren.

Wenn Sie die in der Ausgabe beschriebenen „Boxen“ unbedingt benötigen, ersetzen Sie sie auch '\r\n' mit '\n'.

Andere Tipps

Wenn frames ist ein Numpy-Array, das Sie verwenden könnten numpy.savetxt() Funktion:

numpy.savetxt(filename, frames)

Um Ihr Problem zu beheben csv Code öffnet die Datei im Binärmodus wb Um eine Beschädigung des Zeilenendes zu vermeiden, und nicht umbrechen frames in einer anderen Liste scheint es bereits ein 2D-Array zu sein:

import csv

with open(filename,"wb") as f:
    writer = csv.writer(f, delimiter=' ', quoting=csv.QUOTE_MINIMAL)
    writer.writerows(frames)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top