python - 用 glob 迭代特定目录会给我相同的有序输出 - 有可能吗?
问题描述
我想问一些关于 glob 函数的问题。我用它来遍历输入中以特定顺序给出的目录(参见列表“codes=[...]”)。我知道 glob 不提供排序输出,但是当我根据特定输入对其进行迭代时,它似乎按照我提交的顺序工作。为了更好地理解,这是我的代码:
import glob
import yaml
codes=['a1','b1','c1',
'a2','b2','c2']
#what I want to get from the files
resolutions = []
# get directories
for code in codes:
directories = glob.glob("../../DATA/{}".format(code))
# browse directories, in the directory "a1" is yaml file with name "a1.yaml" and this is what I want to open
for directory in directories_sorted:
pdb_code = directory.split("/")[-1]
yaml_name = directory + "/" + pdb_code + ".yaml"
with open(yaml_name) as stream:
yaml_content = yaml.load(stream, Loader=yaml.FullLoader)
resolution = yaml_content["Resolution"]
resolutions.append(resolution)
print(resolutions)
我的输出如下所示:
[3.9, 3.9, 3.6, 3.6, 3.64, 3.32]
当我检查 yaml 文件时,确实是 a1 有 3.9,b1 有 3.9,等等,输入 c2 中的最后一个确实有 3.32。因此,似乎输出与我在“代码”中的输入顺序相同。是否可以?我只是想确定我的结果是好的。
解决方案
您将有序输入与输出混淆了。是的,您以非常特定的顺序多次运行 glob。您运行的每个 glob 实例都会按照您提交它们的顺序返回每次运行的内容,但是每个正在搜索的文件夹中的内容没有排序,至少 Python 没有排序。glob 的每个实例都按照文件系统返回文件的顺序返回文件,无论是否按顺序排列。
推荐阅读
- python - 按时间序列数据中的条件查找时间段
- android - 有没有办法在自定义圆形按钮中实现霜玻璃效果?
- angular - 为什么使用 RxJS .asObservable() getter/factory 函数模式?
- javascript - 为什么全局变量没有更新以使用回溯存储子集?
- xcode - 无法将 IPA 上传到 MS App Center 进行分发
- python - 是否可以将徽标添加到 KivyMD 工具栏?
- javascript - 在对象 JavaScript 中获取一个键
- python - 使用 Django 将静态内容加载到 Web App 时出现问题
- python - 使用 Numpy einsum 有效收缩 Levi-Civita 张量
- python-3.x - 如何将包含多个元组数组的多维数组转换为python中的列表?