반응형
다음과 같은 공백으로 구분지어진 파일이 있다.
67317 test 50258 9 13 17:14 00 Public/APP icon (11th)/cs/Android/app_icon_test_144_CS.png
67317 test 80097 9 13 17:14 00 Public/APP icon (11th)/cs/Android/app_icon_test_192_CS.png
67317 test 5168 9 13 17:14 00 Public/APP icon (11th)/cs/Android/app_icon_test_36_CS.png
67317 test 8107 9 13 17:14 00 Public/APP icon (11th)/cs/Android/app_icon_test_48_CS.png
67317 test 445433 9 13 17:14 00 Public/APP icon (11th)/cs/Android/app_icon_test_512_CS.png
67317 test 15799 9 13 17:14 00 Public/APP icon (11th)/cs/Android/app_icon_test_72_CS.png
67317 test 25510 9 13 17:14 00 Public/APP icon (11th)/cs/Android/app_icon_test_96_CS.png
67317 test 1395503 9 13 17:14 00 Public/APP icon (11th)/cs/iOS/app_icon_test_1024_CS.png
67317 test 445433 9 13 17:14 00 Public/APP icon (11th)/cs/iOS/app_icon_test_512_CS.png
67317 test 50672 9 13 17:14 00 Public/APP icon (11th)/ct/Andriod/app_icon_test_144_CT.png
67317 test 80623 9 13 17:14 00 Public/APP icon (11th)/ct/Andriod/app_icon_test_192_CT.png
67317 test 5188 9 13 17:14 00 Public/APP icon (11th)/ct/Andriod/app_icon_test_36_CT.png
67317 test 8157 9 13 17:14 00 Public/APP icon (11th)/ct/Andriod/app_icon_test_48_CT.png
67317 test 439482 9 13 17:14 00 Public/APP icon (11th)/ct/Andriod/app_icon_test_512_CT.png
67317 test 15937 9 13 17:14 00 Public/APP icon (11th)/ct/Andriod/app_icon_test_72_CT.png
67317 test 25694 9 13 17:14 00 Public/APP icon (11th)/ct/Andriod/app_icon_test_96_CT.png
공백으로 구분 지었을때 3번째 요소는 파일의 크기이며 이 요소를 기준으로 내림차순으로 정렬하고 알기 쉽게 표기해 본다.
- 요소값 기준 정렬 : list.sort(key=itemgetter(2), reverse=True)
- key=itemgetter(2) : 2번 index 요소 기준
- reverse=True : 내림차순
#!/usr/bin/python3
''' bytes를 KB, MB, GB 등 알아보기 쉽게 변환 '''
def humanbytes(B):
B = float(B)
KB = float(1024)
MB = float(KB ** 2)
GB = float(KB ** 3)
TB = float(KB ** 4)
if B < KB:
return '{0} {1}'.format(B,'Bytes' if 0 == B > 1 else 'Byte')
elif KB <= B < MB:
return '{0:.2f} KB'.format(B / KB)
elif MB <= B < GB:
return '{0:.2f} MB'.format(B / MB)
elif GB <= B < TB:
return '{0:.2f} GB'.format(B / GB)
elif TB <= B:
return '{0:.2f} TB'.format(B / TB)
''' 파일 오픈 '''
f = open("/root/test/test.txt", 'r', encoding='cp949')
sum = 0
list_t = []
''' 한줄씩 읽어서 공백을 기준으로 list로 만든다 '''
''' 2 번째 index 요소 합계를 sum '''
while True:
line = f.readline()
if not line: break
li = line.split()
li[2] = int(li[2])
sum += int(li[2])
list_t.append(li)
f.close()
''' 2번째 index 요소를 기준으로 내림차순 정렬 '''
from operator import itemgetter
list_t.sort(key=itemgetter(2), reverse=True)
''' 출력 '''
for item in list_t:
item[2] = humanbytes(item[2])
print(item)
print(humanbytes(sum))
결과 출력
['67317', 'test', '1.33 MB', '9', '13', '17:14', '00', 'Public/APP', 'icon', '(11th)/cs/iOS/app_icon_test_1024_CS.png']
['67317', 'test', '434.99 KB', '9', '13', '17:14', '00', 'Public/APP', 'icon', '(11th)/cs/Android/app_icon_test_512_CS.png']
['67317', 'test', '434.99 KB', '9', '13', '17:14', '00', 'Public/APP', 'icon', '(11th)/cs/iOS/app_icon_test_512_CS.png']
['67317', 'test', '429.18 KB', '9', '13', '17:14', '00', 'Public/APP', 'icon', '(11th)/ct/Andriod/app_icon_test_512_CT.png']
['67317', 'test', '78.73 KB', '9', '13', '17:14', '00', 'Public/APP', 'icon', '(11th)/ct/Andriod/app_icon_test_192_CT.png']
['67317', 'test', '78.22 KB', '9', '13', '17:14', '00', 'Public/APP', 'icon', '(11th)/cs/Android/app_icon_test_192_CS.png']
['67317', 'test', '49.48 KB', '9', '13', '17:14', '00', 'Public/APP', 'icon', '(11th)/ct/Andriod/app_icon_test_144_CT.png']
['67317', 'test', '49.08 KB', '9', '13', '17:14', '00', 'Public/APP', 'icon', '(11th)/cs/Android/app_icon_test_144_CS.png']
['67317', 'test', '25.09 KB', '9', '13', '17:14', '00', 'Public/APP', 'icon', '(11th)/ct/Andriod/app_icon_test_96_CT.png']
['67317', 'test', '24.91 KB', '9', '13', '17:14', '00', 'Public/APP', 'icon', '(11th)/cs/Android/app_icon_test_96_CS.png']
['67317', 'test', '15.56 KB', '9', '13', '17:14', '00', 'Public/APP', 'icon', '(11th)/ct/Andriod/app_icon_test_72_CT.png']
['67317', 'test', '15.43 KB', '9', '13', '17:14', '00', 'Public/APP', 'icon', '(11th)/cs/Android/app_icon_test_72_CS.png']
['67317', 'test', '7.97 KB', '9', '13', '17:14', '00', 'Public/APP', 'icon', '(11th)/ct/Andriod/app_icon_test_48_CT.png']
['67317', 'test', '7.92 KB', '9', '13', '17:14', '00', 'Public/APP', 'icon', '(11th)/cs/Android/app_icon_test_48_CS.png']
['67317', 'test', '5.07 KB', '9', '13', '17:14', '00', 'Public/APP', 'icon', '(11th)/ct/Andriod/app_icon_test_36_CT.png']
['67317', 'test', '5.05 KB', '9', '13', '17:14', '00', 'Public/APP', 'icon', '(11th)/cs/Android/app_icon_test_36_CS.png']
2.95 MB
반응형
'Language > Python' 카테고리의 다른 글
[Python] File Access Time 을 이용한 파일 삭제 (0) | 2022.05.20 |
---|---|
iptables nfqueue 를 이용한 python packet 처리 (0) | 2022.05.13 |
ubuntu12.04 paramiko module 수동 설치 (0) | 2022.04.26 |