ProgramingTip

TypeError : 문자 버퍼 개체가 필요합니다-정수를 텍스트 파일에 저장하는 동안

bestdevel 2021. 1. 7. 21:27
반응형

TypeError : 문자 버퍼 개체가 필요합니다-정수를 텍스트 파일에 저장하는 동안


내 프로그램이 실행되는 횟수를 추적 하는 매우 간단한 '카운터' 를 만들려고합니다 .

첫째, 한 문자 만 포함 된 텍스트 파일이 있습니다. 0

그런 다음 파일을 int추가 구문 분석 하고 값에 추가 한 다음 텍스트 파일을 추가 1합니다.

f = open('testfile.txt', 'r+')
x = f.read()
y = int(x) + 1
print(y)
f.write(y)
f.close()

y텍스트 파일의 값을 사용하여 다음 닫고 싶습니다 .

하지만 내가 얻을 수 TypeError: expected a character buffer object있습니다.

편집하다 :

y암호화 로 구문 분석 하려고 :

f.write(str(y))

준다

IOError: [Errno 0] Error

의 독독을 확인 했습니까 write()? 그것은 말한다 :

쓰기 (str)-> 없음. 파일에 str 씁니다.

버퍼링으로 인해 디스크의 파일이 기록 된 데이터를 반영하기 전에 flush () 또는 close ()가 필요할 수 있습니다.

당신은 변환 할 필요가 그래서 ystr처음.

또한 이미 이전 값을 읽었 기 때문에 파일의 끝에있는 현재 위치에 기록됩니다. 파일 f.seek(0)의 시작 부분으로 이동하는 데 사용합니다 .`

편집 :에 관한 것은 IOError, 이 문제는 관련 보인다. 거기에서 인용 :

읽기와 쓰기 (또는 추가)가 모두 허용되는 모드 ( "+"기호가 포함 된 모드)의 경우 스트림은 읽기 작업과 a 사이에 플러시 (fflush) 또는 재배치 (fseek, fsetpos, rewind)가 필요합니다. 쓰기 작업 또는 쓰기 작업 후 읽기 작업.

그래서 나는 당신이 시도 f.seek(0)하고 아마도 문제가 사라질 것을 제안합니다 .


from __future__ import with_statement
with open('file.txt','r+') as f:
    counter = str(int(f.read().strip())+1)
    f.seek(0)
    f.write(counter)

아래 코드를 시도해.

보시다시피를 삽입 했거나이 명령은 파일을 읽기 모드로 열어서 쓸 수 파일 내용을 쓰기 쓰기 쓰기를 원하면 쓰기 모드 'w'에서 파일을 열어야합니다. 새 데이터, 즉 'a'를 사용하여 파일에 데이터를 추가 할 수 있습니다.

나는 이것이 도움이되기를 바랍니다;)

f = open('testfile.txt', 'w')# just put 'w' if you want to write to the file 

x = f.readlines() #this command will read file lines

y = int(x)+1

print y
z = str(y) #making data as string to avoid buffer error
f.write(z)

f.close()

참조 URL : https://stackoverflow.com/questions/9786941/typeerror-expected-a-character-buffer-object-while-trying-to-save-integer-to

반응형