微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

glob 语法不按预期工作[] *

如何解决glob 语法不按预期工作[] *

我有一个包含 4 个文件文件夹。

  • Keras_entity_20210223-2138.h5
  • intent_tokens.pickle
  • word_entity_set_20210223-2138.pickle
  • LSTM_history.h5

我使用了代码

NER_MODEL_FILEPATH = glob.glob("model/[Keras_entity]*.h5")[0]

它工作正常,因为 NER_MODEL_FILEPATH 是一个仅包含该 Keras_entity 文件路径的列表。不选择其他 .h5 文件

但是当我使用此代码时:

WORD_ENTITY_SET_FILEPATH = glob.glob("model/[word_entity_set]*.pickle")[0]

它没有按预期工作,而不是只拿起那个 word_entity_set 文件, 此列表包含这两个泡菜文件。 为什么会发生这种情况?

解决方法

只需删除方括号:word_entity_set*.pickle

每个the docs

[seq] 匹配 seq

中的任何字符

所以word_entity_set_20210223-2138.pickle匹配是因为它以w开头,而intent_tokens.pickle匹配是因为它以i开头。

明确地说,它按预期工作。您的期望不正确。

,

您的代码选择了 intent_tokens.pickle 和 word_entity_set_20210223-2138.pickle,因为您的 glob 不正确。将全局更改为 "word_entity_set*.pickle"

当您使用 [<phrase>]*.pickle 时,您是在告诉 globber 匹配 <phrase> 中的任何一个字符加上任何字符,再加上 ".pickle"。所以“wordwordword.pickle”会匹配,所以会:

  • www.pickle
  • .pickle
  • w.pickle

但是

  • xw.pickle
  • foobar.pickle

不会。

确实有无限的排列。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。