我文件夹中有 40k 张图片。文件名遵循以下模式:
1558058263_18ea873ddcf8c65e.jpg
1558408930_63c29ce4462ec194.jpg
1558062887_18ea873ddcf8c65e.jpg
在此文件名的第一部分是时间戳,第二部分是生成图像的机器 ID。
我想仅根据时间戳按顺序处理每个文件。如何按顺序获取文件进行处理。我正在使用 python3 来选择文件。当前代码如下:
for root, dirs, files in os.walk(path):
for name in files:
img=fr.load_image_file('/home/ubuntu/faces/' + name)
答案1
在我看来,你可以使用sort()
orsorted()
函数(来自堆栈溢出):
# ...
for root, dirs, files in os.walk(path):
files.sort()
for name in files:
print(name)
或者
# ...
for root, dirs, files in os.walk(path):
for name in sorted(files):
print(name)
答案2
您可以尝试通过 lambda 进行排序(未经测试):
for root, dirs, files in os.walk(path):
for name in sorted(files, key=lambda x: int(re.search(r'\d+', x).group())):
img=fr.load_image_file('/home/ubuntu/faces/' + name)
答案3
该sort
命令应该给你你想要的。
ls | sort -n -t '_' -k1
-n
按数字排序,而不是默认的字典顺序。
-t '_'
指定_
为字段分隔符。
-k1
对第一个字段进行排序。
答案4
测试过并且效果很好
find . -type f -iname "*.jpg" 2>/dev/null| sed "s/\.\///g"| awk -F "_" '{print $1,$2}'| sort -k1| awk 'OFS="_" {print $1,$2}'
将尽快更新Python脚本