2017-02-27 4 views
1

Ich versuche derzeit, eine Rangliste zu bekommen. Die Rangliste speichert nur die Punkte. Ich versuche, die Noten in die CSV-Datei zu schreiben. Hier ist mein Code für die Schreib:Python 2.7 CSV-Schreibformat nicht korrekt

if col: 
    with open("rec_Scores.csv", "a") as f: 
     w = csv.writer(f, delimiter = ",") 
     w.writerow(str(curr_score) + "\n") 
    crashed = True 

Wenn dies ausgeführt wird, die CSV-Datei endet wie folgt aus: https://gyazo.com/19c9007827498fb5cf847535167d5841

Ich denke, es mit der Partitur zu tun hat, in einen String umgewandelt wird, aber wenn ich konvertierte keine Partitur ich den Fehler:

Traceback (most recent call last): 
    File "C:\Users\Harry\Desktop\Desktop\Computing Project\Galaxian.py", line 173, in <module> 
    w.writerow(curr_score + "\n") 
TypeError: unsupported operand type(s) for +: 'int' and 'str' 

Dies ist das erste Mal habe ich mit cSV-Dateien in Python arbeiten, damit ich wahrscheinlich wird einen kleinen dummen Fehler aber jede Hilfe sehr geschätzt. Vielen Dank.

+0

Entfernen Sie einfach '+„\ n“' und Versuch es noch einmal. – roganjosh

Antwort

3

Sie müssen keine Zeilenumbrüche (\n) selbst hinzufügen. Die csv.writer wird das für Sie tun.

if col: 
    with open("rec_Scores.csv", "ab") as f: 
     w = csv.writer(f, delimiter = ",") 
     w.writerow(curr_score) 
    crashed = True 

Das ungerade Ergebnis erhalten Sie, wenn Sie curr_score in eine Zeichenfolge zu konvertieren ist, weil eine Zeichenfolge in Python iterable ist (man kann sagen for char in "abc":). writerow ist so eingerichtet, dass es ein iteratives Element akzeptiert und ein Feld in der Zeile für jedes Element des Iterablen erstellt. So denkt writerow Sie wollen eine Anzahl von Spalten, die jeweils ein Zeichen enthalten.

Wenn Sie eine Zeichenfolge als einziges Element auf einer Zeile hinzufügen möchten, müssen Sie es in einem anderen iterable, beispielsweise umschließen, ein Tupel:

if col: 
    with open("rec_Scores.csv", "ab") as f: 
     w = csv.writer(f, delimiter = ",") 
     w.writerow((str(curr_score),)) #note the extra brackets and comma 
    crashed = True 
+0

Ich habe diesen Code versucht und es hat den Abstand der Zahlen sortiert, aber es gibt immer noch eine Lücke zwischen jeder Zeile. https://gyazo.com/f308088038cc214588918c7aba40cb9f Könnten Sie mir mit diesem Problem auch bitte helfen, wenn Sie wissen, warum das passiert, so oder so vielen Dank für die Verwaltung zu erklären, warum die Zahlen alle auseinander waren. –

+0

@HarryBeggs Der von Ihnen gepostete Code schreibt nur einen Wert. Bitte schreiben Sie den Code, der auch die zweite Nummer schreibt. – RoadieRich

+0

Dieser Screenshot war nach zwei Läufen, es gibt keine anderen Schreibvorgänge. Danke Edit: Gerade lief es ein drittes Mal und es ist immer noch dieser Raum auftritt. –