使用python以错误的顺序拉出目录中的文件

use*_*854 17 python tkinter list

我正在使用目录中的文件填充tkinter列表框.文件的名称都以01 - n中的数字开头.当我查看目录中的文件时,它们按数字顺序出现.但是,当我将文件加载到列表框中时,它们不是按数字顺序排序的.我可以更改前导数字,但相同的文件将始终出现在同一位置.

我只是使用简化的项目名称来简化这个例子.它仍然表明它们不是按字母顺序或数字顺序排序的.

该列表应在我的列表框中显示如下

01. itemA
02. itemB
03. itemC
04. itemD
Run Code Online (Sandbox Code Playgroud)

但它看起来像:

01. itemA
04. itemD
02. itemB
03. itemC
Run Code Online (Sandbox Code Playgroud)

我可以更改前导数字,但文件将始终以相同的顺序(按名称而不是数字)填充.奇怪的是,它甚至不是按字母顺序排列的.

我用过这个

i = 0
for filename in os.listdir(directory):
      fileList.insert(i, filename)
      i = i + 1
Run Code Online (Sandbox Code Playgroud)

还有这个

 for filename in os.listdir(directory):
        fileList.insert(END, filename)
Run Code Online (Sandbox Code Playgroud)

两者都导致相同的事情.

mgi*_*son 22

os.listdir不保证任何目录内容的排序.如果要对项目进行排序,只需使用内置sorted函数对其进行排序(key如果需要,可以使用适当的函数).


Joh*_*ohn 17

试试这个.

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

如果数字是文件名的一部分,请使用@FabienAndre的评论.

for filename in sorted(os.listdir(directory)):
        print filename
Run Code Online (Sandbox Code Playgroud)