파이썬에서 파일 작업을 할 때 이상한 문제가 발생했습니다. 텍스트 파일과 파일의 내용을 읽고 변경되지 않은 내용으로 다시 작성하는 간단한 코드 조각이 있다고 가정 해 봅시다.파이썬의 읽기/쓰기 파일에 x00을 추가하십시오.
File.txt를
이것은 위의 코드
File.txt
를 실행 한 후 테스트 파일
파이썬 코드
f=open(File.txt,'r+')
data=f.read()
f.truncate(0)
f.write(data)
f.close()
것과 동일한 것 같다. 그러나 16 진수 편집기에서 열었을 때 텍스트 파일의 실제 내용 앞에 \x00
(NULL) 바이트가 많이 표시되는 것을보고 놀랐습니다. 그 전에 은이 아니 었습니다.
누구든지 설명해 주실 수 있습니까?
아니, 아니, 아니. '.truncate'는 파일을 자릅니다. 그게 다야. null 바이트는 없다 코드가'f.truncate (0)'로 끝나면 파일의 크기는 0이됩니다. 이것은 OS가 파일 시스템에 의존하여 * 필기되지 않은 * 바이트를 널 바이트로 채우게하는 0과 다른 파일 오프셋에서의'.write '이다 (또는 필기없는 바이트가 널 (null)로 가정한다). – tzot