【问题标题】:ordered with glob.glob in python [duplicate]在 python 中用 glob.glob 排序 [重复]
【发布时间】:2013-11-08 14:17:29
【问题描述】:

我有一个文件列表:

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 等等。

【问题讨论】:

标签: python list glob


【解决方案1】:

您可以使用特殊的key 函数进行排序。

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

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

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

【讨论】:

    猜你喜欢
    • 2019-07-06
    • 1970-01-01
    • 2015-12-06
    • 2017-01-30
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多