Python中符合POSIX的glob

时间:2018-06-29 08:48:01

标签: python posix glob

我正在用Python实现C程序的一部分。该程序使用glob(3)查找与模式匹配的路径名。这是与内置glob(7) shell相对应的C函数。它们在POSIX.2中指定。

Python中的POSIX glob(3)等同于什么?

我研究了glob标准模块,但对文档感到担心:它在任何地方都未提及POSIX,使用模糊术语“类壳”,并且具有一些非标准扩展名,例如wildstar {{ 1}}模式进行递归扩展。

如果我不使用**标志,使用glob.glob函数是否安全?

我的要求是:

  • 应该与recursive的结果匹配,错误处理可以有所不同
  • 应该同时在Python 2和Python 3上运行
  • 仅需要Linux支持
  • 回答提到PyPi软件包很好,我更喜欢可以审计和出售的较小软件包。
  • 我可以使用ctypes,但是我正在寻找Pythonic解决方案

1 个答案:

答案 0 :(得分:1)

查看glob的实现方式,它不依赖glob(3),因此可以,但不能保证产生相同的结果。符合POSIX的要求也很相似(除了明显的扩展功能)。可能有重叠,但是没有保证,而且显然不是模块的本意。

您基本上可以改写问自己的问题。我真正需要什么功能/行为?glob.glob()是否确实满足我的特定需求?有可能。

或者我是在寻找合规声明(甚至是证书),因为例如项目/客户/我们的公司(仅出于他们知道(或不知道)的原因)需要它。对于glob.glob()而言,您很不走运,除非您自己进行审核/文书工作或雇用某人来做(注意,glob的代码并不算大)。您也可以(即使您说过您不想这么做)用glob(3)libc.so加载ctypes。或者考虑到兼容性要求,从头开始(或基于glob在Python中重新实现它)。至于可能已经存在的替代方案,我将其推迟至其他研究和/或其他建议。