반응형
열린 파일 개체의 크기
현재 열려있는 파일 개체의 크기를 찾는 방법이 있습니까?
특히, 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
반응형
'IT이야기' 카테고리의 다른 글
경고 받기 : " 'newdata'에는 1 개의 행이 있지만 발견 된 변수에는 32 개의 행이 있습니다." (0) | 2021.04.11 |
---|---|
범주 형 데이터 인코딩을위한 Python "TypeError : unhashable type : 'slice'" (0) | 2021.04.11 |
쿼리 중 MySQL 서버와의 연결이 끊어졌습니다. (0) | 2021.04.10 |
PHP에서 강제로 메모리 해제 (0) | 2021.04.10 |
동일한 신호에 대한 여러 bash 트랩 (0) | 2021.04.10 |