我如何根据 (_) 之后的最后一位数字重新排序带有 glob 的文件?
How can l re-order files with glob according to their last digits after ( _)?
我想根据文件的值重新排序我的文件。
为此,我使用 glob 文件加载它们并重新排序。
import glob as glob
import os
features_directory='./features/'
labels_directory='./labels/'
os.chdir(features_directory)
Features=glob.glob("*.npy")# len(Features)=13000
os.chdir(labels_directory)
Labels=glob.glob("*.npy") # len(Labels)=13000
然而,即使我制作sorted()
,它们也没有被排序
Features=sorted(glob.glob(("*.npy"))
Labels=sorted(glob.glob(("*.npy"))
print(Features)
结果
['features_train_data_10.npy','features_train_data_123.npy',...,'features_train_data_13000.npy']
和
print(Labels)
结果
['labels_train_data_98.npy','labels_train_data_45.npy',...,'labels_train_data_117.npy'
]
预期输出:
['features_train_data_1.npy','features_train_data_2.npy',...,'features_train_data_13000.npy']
['labels_train_data_1.npy','labels_train_data_2.npy',...,'labels_train_data_13000.npy']
感谢您的帮助
默认情况下,字符串按字典顺序排序。您应该为 sorted
指定一个键函数以按文件名的数字部分排序:
import re
Features=sorted(glob.glob("*.npy"), key=lambda n: int(re.findall(r'\d+', n)[0]))
我想根据文件的值重新排序我的文件。
为此,我使用 glob 文件加载它们并重新排序。
import glob as glob
import os
features_directory='./features/'
labels_directory='./labels/'
os.chdir(features_directory)
Features=glob.glob("*.npy")# len(Features)=13000
os.chdir(labels_directory)
Labels=glob.glob("*.npy") # len(Labels)=13000
然而,即使我制作sorted()
Features=sorted(glob.glob(("*.npy"))
Labels=sorted(glob.glob(("*.npy"))
print(Features)
结果
['features_train_data_10.npy','features_train_data_123.npy',...,'features_train_data_13000.npy']
和
print(Labels)
结果
['labels_train_data_98.npy','labels_train_data_45.npy',...,'labels_train_data_117.npy'
]
预期输出:
['features_train_data_1.npy','features_train_data_2.npy',...,'features_train_data_13000.npy']
['labels_train_data_1.npy','labels_train_data_2.npy',...,'labels_train_data_13000.npy']
感谢您的帮助
默认情况下,字符串按字典顺序排序。您应该为 sorted
指定一个键函数以按文件名的数字部分排序:
import re
Features=sorted(glob.glob("*.npy"), key=lambda n: int(re.findall(r'\d+', n)[0]))