在python中以glob.glob命令

Gia*_*ear 4 python glob list

我有一个文件列表:

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
Run Code Online (Sandbox Code Playgroud)

当我使用

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

我有这个订单

    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
    .........
Run Code Online (Sandbox Code Playgroud)

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

tob*_*s_k 13

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

sorted(files, key=lambda name: int(name[4:-4]))
Run Code Online (Sandbox Code Playgroud)

这样做,它需要文件名,例如foo_100.txt,去除前4个和后4个字符,将其余字符转换为a int,然后按这些值排序.

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