python-2.7 - 我如何根据 (_) 之后的最后一位数字对带有 glob 的文件重新排序?
问题描述
我想根据它们的值重新排序我的文件。
为此,我使用 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]))
推荐阅读
- git - 是否可以在 maven frontend-maven-plugin 中配置 npm 使用的 git 命令来拉取依赖项?
- c++ - 如何配置 VSCode 任务以在 Linux 上编译多个文件?
- node.js - Router.use() 需要一个中间件函数,但未定义 socket.io 和 mocha
- python - 计算特定 dataframe.iloc 中的元素
- javascript - 重新加载页面时未重新读取 JSP 会话变量
- java - 我在使用 WebDriver 时收到 WebDriverException 和 AccessDeniedException;如何解决?
- c# - COM 互操作,创建 .net com 并在 .net 中使用
- android - 命令失败:./gradlew app:installDebug -PreactNativeDevServerPort=8081
- asp.net - 在当前视图或新视图中下载文件
- python - python中带有按钮的时钟