我想在脚本打开文件时设置自己的顺序,但是打开文件的默认glob.glob是随机的。
我有以下文件:'fish.txt','expo.txt','random.txt'。
这是我所有文件的小规模示例,我想设置我的订单。
我写了用glob.glob打开文件的常规方法
Done
我想要的输出为:
fish.txt
random.txt
expo.txt
答案 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 function与sorted(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()函数的值。