2016-09-04 4 views
-3

Ich versuche, ein Textspiel/RPG in Python zu machen. Im immer einenUngültiges Literal für int() mit Basis 10: '', Lesen der Textdatei

line 89, in surv = int(statload.readline(3))

ValueError: invalid literal for int() with base 10: ''

Fehlercode, wenn eine Datei abzulesen versuchen. die anderen um ihn herum lesen gut.

Lesen code-

statload = open("Statsheet.txt","r") 
luck = int(statload.readline(2)) 
surv = int(statload.readline(3)) 
statload.close 

-Code, die

stats = open("Statsheet.txt","w") 
stats.write(repr(luck)+ "\n") 
stats.write(repr(surv)+ "\n") 
stats.close 

Inhalt von Text zu datei Schreibt File-

45 
40 

ich das "Glück" haben müssen, und „surv "stats in int" -Format, wie später im Code sie in mathematischen Funktionen verwendet werden. Die Module, die ich importiert habe, sind "sys", "time", "random" und "math", wenn das überhaupt hilft.

Edit- wird Variablen in eine JSON-Datei statt, wie ein Benutzer vorgeschlagen, und jetzt wissen, dass die "readline" den Bit-Wert liest. Vielen Dank!

+1

........ 2 ?? 3?? –

+0

als ich 1 und 2 eingegeben habe, funktionierte es nicht für beide, sobald ich sie alle verändert hatte, schien es zu funktionieren. Ich weiß, es ist nicht korrekt, aber die erste ganze Zahl liest sich korrekt. Der zweite ist immer noch nicht. edit 2- wenn ich die richtigen Zahlen einfüge, gibt es einfach einen "Index außerhalb des Bereichs" – moogypoog

+1

Tippen von Zufallszahlen ist nicht programmieren. –

Antwort

-1

Sie verwenden raedline falsch. Das Argument in readline() sollte die Anzahl der zu lesenden Bytes aus der Datei und nicht die zu lesende Zeilennummer sein.

Was möchten Sie ist etwas zu tun, wie folgt aus:

with open("Statsheet.txt", "r") as file: 
    stats = file.readlines() 

luck = int(stats[0]) 
surv = int(stats[1]) 

Aber es gibt bessere Möglichkeiten für Statistiken usw. als Textdateien mit jeder Zeile bedeutet etwas wie SQL zu speichern, json usw.

1

Das Argument zu readline() ist in Ihrem Fall nicht notwendig. legen Sie es einfach, und der Code funktioniert:

luck = int(statload.readline()) 
surv = int(statload.readline()) 

Wenn Sie neugierig sind, statload.readline(2) liest die ersten beiden Zeichen (45) und verlässt den Dateizeiger unmittelbar vor dem Newline, dass die 45 folgt. Diese Newline ist alles, was der zweite Aufruf an liest, und gibt Ihnen die leere Zeichenfolge, die zu der Ausnahme führt, die Sie erhalten.

Wenn Sie das Argument weglassen, liest readline() einfach die gesamte Zeile unabhängig davon, wie lange es ist.

Beachten Sie auch, dass Sie Klammern hinter den Anrufen zu close() sind vermisst:

statload.close() 
0

Es sieht aus wie wenn Sie ausführen Glück = int (statload.readline (2)), die Dateizeiger bewegt sich zum Ende von der Datei, und es gibt nichts mehr zu lesen. Versuchen Sie dies:

statload = open("Statsheet.txt","r").read().split('\n') 
luck = int(statload[0]) 
surv = int(statload[1]) 
Verwandte Themen