我正在用Python实现C程序的一部分。该程序使用glob(3)查找与模式匹配的路径名。这是与内置glob(7) shell相对应的C函数。它们在POSIX.2中指定。
Python中的POSIX glob(3)
等同于什么?
我研究了glob标准模块,但对文档感到担心:它在任何地方都未提及POSIX,使用模糊术语“类壳”,并且具有一些非标准扩展名,例如wildstar {{ 1}}模式进行递归扩展。
如果我不使用**
标志,使用glob.glob
函数是否安全?
我的要求是:
recursive
的结果匹配,错误处理可以有所不同答案 0 :(得分:1)
查看glob的实现方式,它不依赖glob(3)
,因此可以,但不能保证产生相同的结果。符合POSIX的要求也很相似(除了明显的扩展功能)。可能有重叠,但是没有保证,而且显然不是模块的本意。
您基本上可以改写问自己的问题。我真正需要什么功能/行为?glob.glob()
是否确实满足我的特定需求?有可能。
或者我是在寻找合规声明(甚至是证书),因为例如项目/客户/我们的公司(仅出于他们知道(或不知道)的原因)需要它。对于glob.glob()
而言,您很不走运,除非您自己进行审核/文书工作或雇用某人来做(注意,glob
的代码并不算大)。您也可以(即使您说过您不想这么做)用glob(3)
从libc.so
加载ctypes
。或者考虑到兼容性要求,从头开始(或基于glob
在Python中重新实现它)。至于可能已经存在的替代方案,我将其推迟至其他研究和/或其他建议。