|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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']
请大神指点,为什么代码执行后输出的顺序跟文件夹里的顺序不一致呢?谢谢
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 函数用于获取文件名中的数字部分,并将其转换为整数。然后,我们使用这个函数作为排序的关键字,以确保文件按照我们希望的顺序排序。
|
|