【问题标题】:Python glob() returning list of paths in an Unexpected/Strange Pattern [duplicate]Python glob()返回意外/奇怪模式中的路径列表[重复]
【发布时间】:2022-02-15 02:00:01
【问题描述】:

我使用glob() 来获取list 中某些文件的相对路径,它返回一个包含所有名称的列表,但以一种意想不到的模式而不是按字母顺序排列。 这只是一个最小的可重现示例,它也显示了相同的行为。

from glob import glob

default = 'database/test/gcide_'
def_paths = glob(default + '*.json')

for i in def_paths:
    print(i)

这是它读取的目录的屏幕截图

以下是它返回的路径列表

database/test/gcide_w.json
database/test/gcide_n.json
database/test/gcide_x.json
database/test/gcide_q.json
database/test/gcide_a.json
database/test/gcide_v.json
database/test/gcide_c.json
database/test/gcide_d.json
database/test/gcide_o.json
database/test/gcide_r.json
database/test/gcide_j.json
database/test/gcide_s.json
database/test/gcide_z.json
database/test/gcide_k.json
database/test/gcide_b.json
database/test/gcide_u.json
database/test/gcide_f.json
database/test/gcide_e.json
database/test/gcide_p.json
database/test/gcide_g.json
database/test/gcide_h.json
database/test/gcide_i.json
database/test/gcide_l.json
database/test/gcide_m.json
database/test/gcide_y.json
database/test/gcide_t.json

我最近重新安装了我的操作系统并从我所做的备份中恢复了我的文件,我怀疑这是否与这个问题有关,因为在此之前它工作正常,但我不确定。

【问题讨论】:

    标签: python python-3.x glob


    【解决方案1】:

    glob's documentation的第一句话说:

    glob 模块根据 Unix shell 使用的规则查找与指定模式匹配的所有路径名,尽管结果以任意顺序返回

    因此,您从glob 获得的结果没有顺序。你可以用任何你想要的方式对其进行排序,as shown in this answer

    【讨论】:

    • 但我几天前使用过这个功能,没有任何排序,它曾经工作得很好。为什么行为会改变?
    • @DaniyalAhmad 根据文档,“结果是否排序取决于文件系统。”因此,某些设置可能会返回排序结果。
    • 非常感谢 :)
    • 我现在明白了,之前它在 NTFS 分区上,但现在在 EXT4 分区上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    • 2023-04-05
    相关资源
    最近更新 更多