不一致glob.glob结果

问题描述:

谁能告诉我为什么这个命令的工作:不一致glob.glob结果

lefs = glob.glob(".\lef\*.lef") 

但这并不?

techFiles = glob.glob(".\techfile\*.tcl") 

我必须添加额外的反斜线,以便为它工作:

techFiles = glob.glob(".\\techfile\*.tcl") 

的其他线路工作正常,没有额外的反斜杠.. 这些只是用不同的扩展名的简单文件。

所有文件存在并位于正确的目录中。

+3

'\ t'是选项卡所以glob的字符没有什么可扫描的。 –

+1

如果不想反斜杠有任何特殊含义,请使用'r'''。 –

+0

谢谢你们!我知道了。 – Icee

techFiles = glob.glob(".\techfile\*.tcl")\t被解释为一个制表字符(其他“有问题字符是\b\v\a\x\b\f\U\后面跟着一个数字,...我可能会忘记一些)

所以路径是无效的,glob.glob回报什么。

你的其他路径包含\l\*不对应任何逃生sequenc e,所以它没有被解释和种类的作品。

传递字符串文字与Windows路径,始终使用原始的前缀,它比逃避每个反斜线简单:

techFiles = glob.glob(r".\techfile\*.tcl") 

稍微偏离主题:有很多的代码示例这里有大写的目录名:恩glob.glob(".\Techfile\Backlog\*.tcl") ,我总是想知道这是否仅仅是运气,或者如果大多数人仍然没有得到这个\t的问题,并通过大写找到解决方法,因为Windows路径是不区分大小写的...

+0

仅供参考,Windows非常乐意使用正斜杠来分隔路径段,如果你这样做,所有的烦恼都会消失。 – kindall

+0

@kindall对于'glob'为真,但对于某些DOS命令(执行系统调用时),“/”被看作是一个选项,因此您必须使用反斜杠。粘贴文字路径的兴趣是避免逃避或转换成斜杠。 –

+0

非常感谢你!我永远不会想到这一点! – Icee