문제

다음과 같이 Python에서 스파스 파일을 만듭니다.

>>> f = open('testfile', 'ab')
>>> f.truncate(1024000)
>>> f.close()

파일이 완료되면 디스크 공간은 0을 차지하지만 inode 크기는 잘린 값(1000K)으로 설정됩니다.

igor47@piglet:~/test$ ls -lh testfile 
-rw-r--r-- 1 igor47 igor47 1000K 2010-07-09 04:02 testfile
igor47@piglet:~/test$ du -hs testfile 
0   testfile

Python 내에서 파일의 실제 공간 사용량(할당된 크기)을 어떻게 얻나요?그만큼 stat 호출은 파일의 겉보기 크기를 반환하고 전체 파일을 읽는 것 외에 실제 사용법을 얻는 다른 방법을 모릅니다(상당히 커질 수 있음).

>>> os.stat('testfile').st_size
1024000
도움이 되었습니까?

해결책

>>> os.stat('testfile').st_blocks*512
0

짜잔 :)

st_blocks 파일에 실제로 할당된 512바이트 블록의 수입니다.참고하세요 st_blocks 모든 운영 체제에 존재한다고 보장할 수는 없지만 스파스 파일을 지원하는 운영 체제는 일반적으로 존재합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top