예 덤프를 통해 크기별로 파일 목록 : 값 단위 :주문 디렉토리 목록에서 파이썬
hello:3.1 GB
world:1.2 MB
foo:956.2 KB
위의 목록은 FILE의 형식으로되어 있습니다. 파일 크기에 따라 위의 각 줄을 어떻게 주문합니까?
아마도 ": VALUE UNIT"(또는 어떻게 든 구분 기호를 사용하여) 단위를 통해 각 행을 구문 분석 한 다음 ConvertAll engine을 통해이를 실행하고 나머지 값과 함께 해시 값을받습니다 (파일 이름)을 찾은 다음 결과 사전을 크기를 통해 정렬합니다.
문제는 패턴 매칭에 대해 잘 모릅니다. 하지만 당신이 정렬 할 수 있다고 생각합니다 dictionary
이 문제를 해결할 수있는 더 좋은 방향이 있다면 알려주십시오.
편집 :
내가 파일에 실제로이었다 있었다 목록입니다. (최고) Alex Martelli의 대답에서 영감을 얻은 다음 파일 하나를 추출하여 주문하고 다른 파일에 쓰는 다음 코드를 작성했습니다. 원하는
#!/usr/bin/env python
sourceFile = open("SOURCE_FILE_HERE", "r")
allLines = sourceFile.readlines()
sourceFile.close()
print "Reading the entire file into a list."
cleanLines = []
for line in allLines:
cleanLines.append(line.rstrip())
mult = dict(KB=2**10, MB=2**20, GB=2**30)
def getsize(aline):
fn, size = aline.split(':', 1)
value, unit = size.split(' ')
multiplier = mult[unit]
return float(value) * multiplier
print "Writing sorted list to file."
cleanLines.sort(key=getsize)
writeLines = open("WRITE_OUT_FILE_HERE",'a')
for line in cleanLines:
writeLines.write(line+"\n")
writeLines.close()
천재성! – torger
+1 진정한 파이썬 그랜드 마스터입니다. – helpermethod
7 년 후 여전히 매우 도움이됩니다. 고맙습니다 –