在python中以glob.glob命令

时间:2013-10-29 12:18:09

标签: python list glob

我有一个文件列表:

foo_00.txt
foo_01.txt
foo_02.txt
foo_03.txt
foo_04.txt
foo_05.txt
foo_06.txt
foo_07.txt
foo_08.txt
foo_09.txt
foo_10.txt
foo_11.txt
.........
.........
foo_100.txt
foo_101.txt

当我使用

import glob
PATH = "C:\testfoo"
listing = glob.glob(os.path.join(PATH, '*.txt'))

我有这个订单

    foo_00.txt
    foo_01.txt
    foo_02.txt
    foo_03.txt
    foo_04.txt
    foo_05.txt
    foo_06.txt
    foo_07.txt
    foo_08.txt
    foo_09.txt
    foo_100.txt
    foo_101.txt
    .........
    .........
    foo_10.txt
    foo_11.txt
    .........

我也试过了sorted(glob.glob(os.path.join(PATH, '*.txt'))),但没有解决我的问题,因为我希望得到正确的序列。在foo_09.txt之后我想导入foo_10.txt而不是foo_100.txt等等。

1 个答案:

答案 0 :(得分:10)

您可以使用特殊的key功能进行排序。

sorted(files, key=lambda name: int(name[4:-4]))

这是做什么的,它需要文件名,例如foo_100.txt,删除前4个和后4个字符,将其余字符转换为int,然后按这些值排序。

当然,这仅在所有文件具有相同的前缀和扩展名时才有效,并且您可能必须为其他文件名使用不同的数字。或者,您可以使用字符串的split方法或正则表达式来提取键函数中的数字部分。