Các tệp trên hệ thống tệp không được sắp xếp. Bạn có thể sắp xếp các tên tập tin kết quả chính mình bằng cách sử dụng sorted()
function:
for infile in sorted(glob.glob('*.txt')):
print "Current File Being Processed is: " + infile
Lưu ý rằng os.path.join
cuộc gọi trong mã của bạn là một không-op; với chỉ một đối số, nó không làm bất cứ điều gì, nhưng trả về đối số đó không thay đổi gì.
Lưu ý rằng các tệp của bạn sẽ sắp xếp theo thứ tự bảng chữ cái, đặt 10
trước 9
. Bạn có thể sử dụng một chức năng tùy chỉnh chìa khóa để cải thiện việc phân loại:
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
Chức năng numericalSort
tách ra bất kỳ chữ số trong một tên tập tin, biến nó thành một con số thực tế, và trả kết quả để phân loại:
>>> 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']
Nguồn
2012-08-23 14:31:19
HI. Chức năng được sắp xếp không thay đổi thứ tự không may. – user1620012
@ user1620012: Cập nhật câu trả lời của tôi để cải thiện thứ tự sắp xếp. –
hi..các tệp của tôi có các tên như .. text-text9-text.txt, text-text10-text.txt, v.v. – user1620012