2016-09-04 3 views
-3

저는 파이썬에서 텍스트 게임/rpg를 만들려고합니다. 임 파일명을 읽을 때int 10 진법이 올바르지 않습니다. 텍스트 파일을 읽습니다.

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

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

오류 코드가 발생했습니다. 주변의 다른 것들은 잘 읽는다.

독서 파일 -

45 
40 

내가 "행운"과 "SURV을 가지고있는 텍스트의

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

내용을 파일 -에 기록

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

코드 코드 - ""int "형식의 통계는 나중에 코드에서 수학 함수에 사용됩니다. 내가 가져온 모듈은 "sys", "time", "random"및 "math"입니다.

편집 - 한 사용자가 제안한 것처럼 변수를 JSON 파일에 저장하고 "readline"이 비트 값을 읽는 것을 알게됩니다. 감사!

+1

........ 2 ?? 삼?? –

+0

내가 1과 2를 입력했을 때, 그것들 모두를 바꿔 버렸 더라면, 그것도 작동하지 않았다. 나는 그것이 맞지 않다는 것을 알고 있지만, 첫 번째 정수는 정확하다고 읽는다. 두 번째 것은 아직도하지 않습니다. 편집 2 - 올바른 숫자를 입력하면 "범위를 벗어난 색인"이 표시됩니다. – moogypoog

+1

임의의 숫자를 입력하면 프로그래밍되지 않습니다. –

답변

-1

부정확하게 사용하고 있습니다. readline()의 인수는 읽을 행 번호가 아닌 파일에서 읽을 바이트 수이어야합니다.

은 무엇 당신이하고 싶은 것은이 같은 것입니다 :

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

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

그러나 SQL 같은 것을 의미 각 라인, JSON 등으로 텍스트 파일보다 통계 등을 저장하기위한 더 나은 옵션이 있습니다

1

귀하의 경우에는 readline()에 대한 인수가 필요하지 않습니다. 그냥 삭제하고 코드가 작동합니다 : 당신이 궁금하다면

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

statload.readline(2)는 처음 두 문자 (45)를 읽고 바로 45 다음에 줄 바꿈하기 전에 파일 포인터를 둡니다. 이 개행은 모두 readline()에 대한 두 번째 호출에서 읽는 빈 문자열을주는 예외입니다.

인수를 생략하면 readline()은 단순히 얼마나 오랫동안 전체 행을 읽는 지 알 수 있습니다.

또한 close()에 호출 한 후 괄호를 놓치고 있습니다 :

statload.close() 
0

같습니다처럼 당신은 마지막에 운 = INT (statload.readline (2)), 파일 포인터 이동을 실행하면 파일의 내용을 읽을 수 있습니다. 이것을 시도하십시오 :

statload = open("Statsheet.txt","r").read().split('\n') 
luck = int(statload[0]) 
surv = int(statload[1]) 
관련 문제