ファイルシステム上のファイルはソートされていません。sorted()
次の関数を使用して、結果のファイル名を自分で並べ替えることができます。
for infile in sorted(glob.glob('*.txt')):
print "Current File Being Processed is: " + infile
os.path.join
コード内の呼び出しはノーオペレーションであることに注意してください。引数が 1 つだけの場合、何もせず、その引数を変更せずに返します。
ファイルはアルファベット順にソートされることに注意して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']