鱼C论坛

 找回密码
 立即注册
查看: 1747|回复: 1

[已解决]代码执行后输出的顺序跟文件夹里的顺序不一致

[复制链接]
发表于 2023-5-24 14:12:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import torch
import glob
import os
all_pics = glob.glob('/Users/spf/PycharmProjects/pythonProject/hk/training/*.png')
print(all_pics[:4])

结果显示为
['/Users/spf/PycharmProjects/pythonProject/hk/training/00377_matte.png',
'/Users/spf/PycharmProjects/pythonProject/hk/training/00694_matte.png',
'/Users/spf/PycharmProjects/pythonProject/hk/training/00481.png',
'/Users/spf/PycharmProjects/pythonProject/hk/training/00970_matte.png']

但文件见里面的顺序是:
['/Users/spf/PycharmProjects/pythonProject/hk/training/0001.png',
'/Users/spf/PycharmProjects/pythonProject/hk/training/0001_matte.png',
'/Users/spf/PycharmProjects/pythonProject/hk/training/0002.png',
'/Users/spf/PycharmProjects/pythonProject/hk/training/0002_matte.png']

请大神指点,为什么代码执行后输出的顺序跟文件夹里的顺序不一致呢?谢谢
最佳答案
2023-5-24 14:27:21
glob.glob 函数返回的文件列表是按照文件名的字母顺序排序的,而不是按照你在文件系统中看到的顺序。在许多文件系统中,文件排序基于文件名的数值,这可能是你看到的文件夹里的顺序。

如果你想按照文件名的数字顺序获取文件,你可以使用一些额外的代码对文件名进行排序。在这个例子中,你可以先获取文件名的数字部分,然后按照这个数字排序。以下是一个可能的解决方案:
import glob
import os
import re

all_pics = glob.glob('/Users/spf/PycharmProjects/pythonProject/hk/training/*.png')

def sort_key(s):
    return int(re.findall(r'\d+', os.path.basename(s))[0])

all_pics.sort(key=sort_key)

print(all_pics[:4])

在这个代码中, sort_key 函数用于获取文件名中的数字部分,并将其转换为整数。然后,我们使用这个函数作为排序的关键字,以确保文件按照我们希望的顺序排序。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-24 14:27:21 | 显示全部楼层    本楼为最佳答案   
glob.glob 函数返回的文件列表是按照文件名的字母顺序排序的,而不是按照你在文件系统中看到的顺序。在许多文件系统中,文件排序基于文件名的数值,这可能是你看到的文件夹里的顺序。

如果你想按照文件名的数字顺序获取文件,你可以使用一些额外的代码对文件名进行排序。在这个例子中,你可以先获取文件名的数字部分,然后按照这个数字排序。以下是一个可能的解决方案:
import glob
import os
import re

all_pics = glob.glob('/Users/spf/PycharmProjects/pythonProject/hk/training/*.png')

def sort_key(s):
    return int(re.findall(r'\d+', os.path.basename(s))[0])

all_pics.sort(key=sort_key)

print(all_pics[:4])

在这个代码中, sort_key 函数用于获取文件名中的数字部分,并将其转换为整数。然后,我们使用这个函数作为排序的关键字,以确保文件按照我们希望的顺序排序。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 01:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表