원하는 것을 이미 알고있는 경우 한 줄의 코드로 파일 크기를 인쇄하는 빠르고 비교적 읽기 쉬운 방법은 아래를 참조하십시오. 이 한 줄짜리는 위의 @ccpizza 의 훌륭한 답변 과 여기에서 읽은 편리한 서식 지정 트릭을 결합합니다. 쉼표로 숫자를 천 단위 구분 기호로 인쇄하는 방법은 무엇입니까? .
바이트
print ('{:,.0f}'.format(os.path.getsize(filepath))+" B")
킬로 비트
print ('{:,.0f}'.format(os.path.getsize(filepath)/float(1<<7))+" kb")
킬로바이트
print ('{:,.0f}'.format(os.path.getsize(filepath)/float(1<<10))+" KB")
메가 비트
print ('{:,.0f}'.format(os.path.getsize(filepath)/float(1<<17))+" mb")
메가 바이트
print ('{:,.0f}'.format(os.path.getsize(filepath)/float(1<<20))+" MB")
기가비트
print ('{:,.0f}'.format(os.path.getsize(filepath)/float(1<<27))+" gb")
기가 바이트
print ('{:,.0f}'.format(os.path.getsize(filepath)/float(1<<30))+" GB")
테라 바이트
print ('{:,.0f}'.format(os.path.getsize(filepath)/float(1<<40))+" TB")
분명히 그들은 당신이 처음에 다루게 될 크기를 대략적으로 알고 있다고 가정합니다. 제 경우에는 (South West London TV의 비디오 편집기) MB이고 때로는 비디오 클립의 경우 GB입니다.
PATHLIB를 사용
하여 업데이트 Hildy의 의견에 대한 답으로, Python 표준 라이브러리를 사용하여 간단한 함수 쌍 (병합하는 것이 아니라 '원자 적'으로 유지)에 대한 제안이 있습니다.
from pathlib import Path
def get_size(path = Path('.')):
""" Gets file size, or total directory size """
if path.is_file():
size = path.stat().st_size
elif path.is_dir():
size = sum(file.stat().st_size for file in path.glob('*.*'))
return size
def format_size(path, unit="MB"):
""" Converts integers to common size units used in computing """
bit_shift = {"B": 0,
"kb": 7,
"KB": 10,
"mb": 17,
"MB": 20,
"gb": 27,
"GB": 30,
"TB": 40,}
return "{:,.0f}".format(get_size(path) / float(1 << bit_shift[unit])) + " " + unit
>>> format_size("d:\\media\\bags of fun.avi")
'38 MB'
>>> format_size("d:\\media\\bags of fun.avi","KB")
'38,763 KB'
>>> format_size("d:\\media\\bags of fun.avi","kb")
'310,104 kb'