20

ディレクトリからのファイルを tkinter リストボックスに入力しています。ファイル名はすべて 01 ~ n の数字で始まります。ディレクトリ内のファイルを表示すると、番号順に表示されます。ただし、ファイルをリストボックスにロードすると、番号順に並べられません。先頭の数字は変更できますが、同じファイルが常に同じ場所に表示されます。

この例では単純化するために単純化された項目名を使用しています。アルファベット順でも数値順でもソートされていないことがわかります。

リストはリストボックスに次のように表示されます

01. itemA
02. itemB
03. itemC
04. itemD

しかし、次のように表示されます。

01. itemA
04. itemD
02. itemB
03. itemC

先頭の数字を変更することはできますが、ファイルは常に同じ順序 (数字ではなく名前順) で読み込まれます。奇妙なことに、アルファベット順でさえありません。

私はこれを使用しました

i = 0
for filename in os.listdir(directory):
      fileList.insert(i, filename)
      i = i + 1

この

 for filename in os.listdir(directory):
        fileList.insert(END, filename)

どちらも同じ結果になります。

4

2 に答える 2

27

os.listdirディレクトリの内容の順序を保証するものではありません。アイテムを並べ替えたい場合は、組み込みsorted関数を使用して並べ替えます (必要に応じて適切なkey関数を使用します)。

于 2012-10-29T12:55:14.313 に答える
18

これを試して。

for index, filename in enumerate(sorted(os.listdir(directory))):
        print '{0:02d}. {1}'.format(index + 1, filename)

番号がファイル名の一部である場合は、@FabienAndre のコメントを使用してください。

for filename in sorted(os.listdir(directory)):
        print filename
于 2012-10-29T12:57:28.127 に答える