【问题标题】:Inconsistent glob.glob resultsglob.glob 结果不一致
【发布时间】:2017-08-02 20:58:59
【问题描述】:

谁能告诉我为什么这个命令有效:

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

但这不是吗?

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

我必须添加额外的反斜杠才能使其工作:

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

另一行工作正常,没有额外的反斜杠.. 这些只是具有不同扩展名的简单文件。

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

【问题讨论】:

  • \t 是制表符,因此 glob 没有可扫描的内容。
  • 如果您不希望反斜杠有任何特殊含义,请使用 r''
  • 谢谢大家!我明白了。

标签: python file-io filesystems glob


【解决方案1】:

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

所以路径无效,glob.glob 什么也不返回。

您的其他路径包含\l\*,它们不对应于任何转义序列,因此它不会被解释并且可以正常工作。

要将字符串文字作为 Windows 路径传递,请始终使用原始前缀,这比转义每个反斜杠更简单:

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

有点题外话:这里有很多代码示例都带有大写的目录名称:例如glob.glob(".\Techfile\Backlog\*.tcl"),我一直想知道这是否仅仅是运气,或者大多数人仍然没有得到这个\t 问题和通过大写找到解决方法,因为 Windows 路径不区分大小写...

【讨论】:

  • 仅供参考,Windows 非常乐意使用正斜杠来分隔路径段,如果您这样做,您的所有烦恼都会消失。
  • @kindall 对于glob 为真,但对于某些 DOS 命令(执行系统调用时),“/”是一个选项,因此您必须使用反斜杠。粘贴文字路径的好处是避免转义或转换为斜线。
  • 非常感谢!!我从来没有想过!
猜你喜欢
  • 1970-01-01
  • 2014-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-08
  • 2019-09-05
  • 2021-03-27
相关资源
最近更新 更多