2017-11-29 2 views
0

파일에서받은 번호에 1을 더한 다음이 새 정수를 원래 값을 대체하는 동일한 파일에 기록하는 프로그램을 만들려고합니다. 지금까지이 있습니다파일에서 원래 번호를 제거하는 동안 파이썬에서 파일에 숫자를 쓰려면 어떻게해야합니까?

import linecache 
averagetracker = open("trackerofquiz.txt", "a") 
averagenumber = linecache.getline("trackerofquiz.txt", 1).rstrip("\n") 
print(repr(averagenumber))# to check if it has any strings 
averagenumber = int(averagenumber)#these 4 lines get the number from the quiztracker for the 
averagenumber = averagenumber + 1 #average, turns it into an int, adds 1 then turns it back to 
averagenumber = str(averagenumber)#an str, not sure if you need to turn it back into an str 
print(repr(averagenumber))# to check if it has any strings 
averagetracker.write(averagenumber) 
averagetracker.close() 
print("success") 

때마다 나는 그것이 작동하지만 내가 "0"로 시작하는, 그래서 만약 원래 값을 제거하고이 같은 파일에 기록됩니다를 실행하지 않습니다 할 "01". 그것을 다시 실행 한 다음 "01"을 사용하고 "012"와 같은 논리를 사용하여 끝에 2를 추가합니다. 어떻게하면 값을 제거하여 파일에서 값을 제거 할 수 있습니까? 개입하지 않습니까? 감사합니다. .

+0

open 함수의 "a"인수 대신 "r +"를 사용해야합니다. "a"는 추가를 의미하므로 파일 끝에 만 쓸 수 있습니다. "r +를 사용하면 위치를 찾고 파일의 아무 곳에 나 쓸 수 있습니다 – Harry

+0

음 ... 코드에 반복이 없습니다 – theBrainyGeek

답변

1

averagetracker = open("trackerofquiz.txt", "a")에서 averagetracker = open("trackerofquiz.txt", "r")으로 변경하십시오. 그런 다음 averagetracker.write(averagenumber) 행 바로 앞에 averagetracker.close()averagetracker = open("trackerofquiz.txt", "w")을 입력하십시오.

그것은 다음과 같아야합니다 다음 '에'의미 'APPEND가' '쓰기'를 말한다 'w'반면 (파일의 끝으로 쓰기) 때문에

import linecache 
averagetracker = open("trackerofquiz.txt", "r") 
averagenumber = linecache.getline("trackerofquiz.txt", 1).rstrip("\n") 
print(repr(averagenumber))# to check if it has any strings 
averagenumber = int(averagenumber)#these 4 lines get the number from the 
quiztracker for the 
averagenumber = averagenumber + 1 #average, turns it into an int, adds 1 then turns it back to 
averagenumber = str(averagenumber)#an str, not sure if you need to turn it back into an str 
print(repr(averagenumber))# to check if it has any strings 
averagetracker.close() 
averagetracker = open("trackerofquiz.txt", "w") 
averagetracker.write(averagenumber) 
averagetracker.close() 
print("success") 

이것은 (파일의 내용을 대체) . 그러나 'w'로 시작할 수 없습니다. 프로그램의 관점에서 파일의 내용을 즉시 지울 것이므로 'r'(읽기)로 시작한 다음 'w'로 다시 열어야합니다.

도움이 되었기를 바랍니다.

+0

나는 비슷한 것을 생각하고 있었지만 효과가 있었다. :) –

+0

최대한 빨리 답변을 수락합니다. –

0

open("trackerofquiz.txt", "a")에 파일 ("a")을 추가하겠다고 표시했습니다. 파일을 덮어 쓰려면 "a"를 "w"로 변경하고 황금색이어야합니다.

+0

이전에 시도한 결과이 오류 메시지가 나타납니다 :"기수가 10 인 int()에 대한 리터럴이 잘못되었습니다. '' –

+0

파이썬이 파일을 열어 파일에 쓸 때, 파일에 남아 있던 것이 모두 사라진 것을 의미하기 전에 파일에 있던 모든 것을 지 웁니다. –

+0

알토 알라스 (Alto Allas)가 다른 답변에서 지적했듯이 - 올바른 것이고 내 것이 잘못되었습니다 - "w"는 읽히기 전에 데이터를 삭제합니다. – dmcoding

관련 문제