Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
glob-文件的python排序列表_Python_Glob - Fatal编程技术网

glob-文件的python排序列表

glob-文件的python排序列表,python,glob,Python,Glob,如果在我的目录中有一个文件名列表,比如:1_r.png、1_l.png、2_r.png、2_l.png、3_r.png、3_l.png 如何使用glob对它们进行排序?我有一些类似的想法 glob.glob('{path}/*{suffix}'), key=lambda x: int(...): 如果后缀是_l.png,我想列出只包含_l.png的文件。我不知道如何定义密钥来对其进行排序。据我所知,您需要做两件事: 筛选文件以仅包含结尾为_l.png的文件 对文件列表进行排序

如果在我的目录中有一个文件名列表,比如:1_r.png、1_l.png、2_r.png、2_l.png、3_r.png、3_l.png

如何使用glob对它们进行排序?我有一些类似的想法

glob.glob('{path}/*{suffix}'), 
        key=lambda x: int(...):

如果后缀是_l.png,我想列出只包含_l.png的文件。我不知道如何定义密钥来对其进行排序。

据我所知,您需要做两件事:

筛选文件以仅包含结尾为_l.png的文件 对文件列表进行排序 实现这一点的一个非常简单的方法是:

sorted(glob.glob("*_l.png"))
更新:

要将文件按编号作为整数排序,需要从名称中提取编号

# get all png files
lst = glob.glob("*_l.png")

# extract the number and create a tuple
lst = [(int(s.split("_")[0]), s) for s in lst]

# sort the tuple and create a new list with only the filename
lst = [x[1] for x in sorted(lst)]

如果需要按自然顺序排序,可以查看natsort

例如:

from natsort import natsorted
#a= ["1_r.png","1_l.png","2_r.png","2_l.png","3_r.png","3_l.png"]
a= ["3_r.png","1_l.png","2_r.png","2_l.png","1_r.png","3_l.png"]
print(natsorted(a))
输出:

['1_l.png', '1_r.png', '2_l.png', '2_r.png', '3_l.png', '3_r.png']
它可以与glob-like一起使用

for file in natsorted(glob.glob("*.png")):
    print(file)

欢迎来到SO。请确保您的代码是正确的Python。您提供的代码有一些语法问题。请修复它们,这样人们就可以比较您已经尝试过的。谢谢Leech先生,我只是python的新手。再次感谢另一位。你好,李先生,我刚刚发现这篇文章的输出格式是1,10,11,12,13.png。它不是以1,2,3,…,10,11,12,13.png格式运行的。如何解决它?我添加了一个更新,用于按整数数字排序