使用glob.glob设置订单

时间:2019-01-07 08:16:12

标签: python function sorting glob

我想在脚本打开文件时设置自己的顺序,但是打开文件的默认glob.glob是随机的。

我有以下文件:'fish.txt','expo.txt','random.txt'。

这是我所有文件的小规模示例,我想设置我的订单。

我写了用glob.glob打开文件的常规方法

Done

我想要的输出为:

fish.txt

random.txt

expo.txt

3 个答案:

答案 0 :(得分:1)

在遍历文件名之前,可以使用sorted(list)对文件名进行排序:

#!/usr/bin/env python
import sys, os, glob

def sorter(item):
    """Get an item from the list (one-by-one) and return a score for that item."""
    return item[1]

files = sorted(glob.glob('*.txt'), key=sorter)
for file in files:
     print(file)

在这里,它按文件名中的第二个字母排序。将sorter()函数更改为想要对文件列表进行排序的方式。

要按字母顺序排序,不需要key=sorter部分,因为这是sorted()的默认行为,带有字符串列表。这样便变成了:

files = sorted(glob.glob('*.txt'))
for file in files:
     print(file)

答案 1 :(得分:0)

您可以对glob中的条目进行排序。您可以使用默认排序方式,也可以选择自己的算法:

简单用法:

#! /usr/bin/env python
import sys, os, glob

for file in sorted(glob.glob('*.txt')):
     print(file)

“已排序”手册https://python-reference.readthedocs.io/en/latest/docs/functions/sorted.html

答案 2 :(得分:0)

您可以将lambda functionsorted(list)结合使用来设计自定义排序方法。

mylist = ['fish.txt','random.txt', 'expo.txt']
mylist2 = sorted(mylist, key = lambda x: x[-6:-5])
print(mylist2)

#output:
#['random.txt', 'expo.txt', 'fish.txt']

这将根据字符串的自定义参数对列表进行排序。这将使用第6个字符进行排序。

  

glob.glob()会列出您,您可以轻松实现。

用于从文件夹中读取多张图像。如果您的文件名顺序如下:files0.txt,file1.txt,file10.txt,file100.txt,file2.txt,则

sorted(mylist, key = lambda x: x[4:-4]) will help you.
  

您需要存储sorted()函数的值。