IT이야기

열린 파일 개체의 크기

cyworld 2021. 4. 11. 09:30
반응형

열린 파일 개체의 크기


현재 열려있는 파일 개체의 크기를 찾는 방법이 있습니까?

특히, tarfile 모듈을 사용하여 tarfile을 생성하고 있지만, tarfile이 특정 크기를 초과하는 것을 원하지 않습니다. 내가 아는 한 tarfile 객체는 파일과 유사한 객체이므로 일반적인 솔루션이 작동한다고 상상합니다.


$ ls -la chardet-1.0.1.tgz
-rwxr-xr-x 1 vinko vinko 179218 2008-10-20 17:49 chardet-1.0.1.tgz
$ python
Python 2.5.1 (r251:54863, Jul 31 2008, 22:53:39)
[GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> f = open('chardet-1.0.1.tgz','rb')
>>> f.seek(0,2)
>>> f.tell()
179218L

예제에 ChrisJY의 아이디어 추가

>>> import os
>>> os.fstat(f.fileno()).st_size
179218L
>>>        

음, 파일 객체가 tell 메소드를 지원하면 다음을 수행 할 수 있습니다.

current_size = f.tell()

그것은 그것이 현재 쓰고 있음을 알려줄 것입니다. 순차적으로 쓰면 파일 크기가됩니다.

그렇지 않으면 os.fstat다른 사람이 제안한 파일 시스템 기능을 사용할 수 있습니다 .


파일 설명자가있는 fstat경우 크기를 찾는 데 사용할 수 있습니다 (있는 경우). 보다 일반적인 해결책은 파일의 끝을 찾아 그 위치를 읽는 것입니다.


또 다른 해결책은 "메모리 내 작업을 수행하는 경우"StringIO를 사용하는 것입니다.

with open(file_path, 'rb') as x:
    body = StringIO()
    body.write(x.read())
    body.seek(0, 0)

이제 body.NET과 같은 다양한 속성을 가진 파일 객체처럼 작동합니다 body.read().

body.len 파일 크기를 제공합니다.


f = open('myfile', 'rb')
print(len(f.read()))

참조 URL : https://stackoverflow.com/questions/283707/size-of-an-open-file-object

반응형