python的os.listdir()的使用疑惑

os.listdir()获得一个4万个文件名,结果是无序的。请问有什么办法有序的保存到这些文件名到list中,文件名如下图片说明

数据是按字母排序的,如果你要实现13_left.jpg, 14_left.jpg.....13_right.jpg, 14_right.jpg这样的顺序,就得写个排序方法做排序。

import os

def compare(x, y):
    xparts = x.split('_')
    yparts = y.split('_')
    if len(xparts) > 1 and len(yparts) > 1:
        if xparts[1] == yparts[1]:
            try:
                return cmp(int(xparts[0]),int(yparts[0]))
            except:
                pass
            return cmp(xparts[0], yparts[0])
        else:
            return cmp(xparts[1], yparts[1])
    else:
        return cmp(x, y)

items = os.listdir('./tmp')
print items
items.sort(compare)
print items

输出:
['10_right.jpg', '11_right.jpg', '1_left.jpg', '1_right.jpg', '20_left.jpg', '2_left.jpg', '2_right.jpg']
['1_left.jpg', '2_left.jpg', '20_left.jpg', '1_right.jpg', '2_right.jpg', '10_right.jpg', '11_right.jpg']

import os

DIR = "/home/serho/workspace/lisp"

def compare(x, y):

stat_x = os.stat(DIR + "/" + x)


stat_y = os.stat(DIR + "/" + y)


if stat_x.st_ctime < stat_y.st_ctime:

    return -1

elif stat_x.st_ctime > stat_y.st_ctime:

    return 1

else:

    return 0

iterms = os.listdir(DIR)

iterms.sort(compare)

for iterm in iterms:

print iterm

python好不好用,据说做项目和搭积木一样

可以加个排序,无序状态也有可能是Python版本的问题

from glob import glob
##假设所有的文件都放在D盘file文件夹中
namelist = glob(r'D:\file*.jpeg')

 os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。这个列表以字母顺序。 它不包括 '.' 和'..' 即使它在文件夹中。

只支持在 Unix, Windows 下使用。

 感谢分享,用Python2.7,遇到如下报错,还不知道什么原因。   items = os.listdir('./tmp')
WindowsError: [Error 3] : './tmp/*.*'