파일 시스템의 파일은 정렬되지 않습니다. 사용 결과 파일 이름을 직접 분류 할 수 있습니다 sorted()
function :
for infile in sorted(glob.glob('*.txt')):
print "Current File Being Processed is: " + infile
코드에서 os.path.join
호출이 어떤 조합 없다는 것을 참고; 하나의 인수만으로는 아무것도하지 않고 그 인수를 변경하지 않고 반환합니다.
파일은 알파벳 순으로 정렬되며, 10
은 9
앞에옵니다. 당신은 정렬을 개선하기 위해 사용자 정의 키 기능을 사용할 수 있습니다
import re
numbers = re.compile(r'(\d+)')
def numericalSort(value):
parts = numbers.split(value)
parts[1::2] = map(int, parts[1::2])
return parts
for infile in sorted(glob.glob('*.txt'), key=numericalSort):
print "Current File Being Processed is: " + infile
numericalSort
기능은 실제 숫자로 바뀝니다, 파일 이름에 임의의 숫자를 분할하고, 정렬 결과를 반환
>>> files = ['file9.txt', 'file10.txt', 'file11.txt', '32foo9.txt', '32foo10.txt']
>>> sorted(files)
['32foo10.txt', '32foo9.txt', 'file10.txt', 'file11.txt', 'file9.txt']
>>> sorted(files, key=numericalSort)
['32foo9.txt', '32foo10.txt', 'file9.txt', 'file10.txt', 'file11.txt']
HI. 정렬 된 함수는 불행히도 순서를 변경하지 않습니다. – user1620012
@ user1620012 : 내 대답을 업데이트하여 정렬 순서를 개선했습니다. –
안녕하세요. 실제로 내 파일의 이름은 .. text-text9-text.txt, text-text10-text.txt 등입니다. – user1620012