【问题标题】:Glob returns back an empty list in Python [closed]Glob在Python中返回一个空列表[关闭]
【发布时间】:2015-03-19 04:06:51
【问题描述】:

我的代码:

hi = glob.glob("hi/FEC[0-9][0-9][0-9][0-9][0-9]_[0-9].seq")

我正在使用 glob 模块,我正在尝试获取所有路径文件名,但它返回的只是一个空列表。我不知道为什么它一直这样做。在我的代码被意外删除之前它就起作用了。

[]

无论文件是否不存在,它仍然会给我一个空列表。

更新: 所以我拥有的以下文件是

FEC00001_1.seq

FEC00002_1.seq

FEC00002_2.seq

等等..

更新 2: 所以我才意识到它可能必须像你们说的那样对错误的文件夹做一些事情。

因为现在,我的脚本在“folder1”中,而我尝试访问的所有文件都在“folder2”中

/mainfolder/folder1/script.py

/mainfolder/folder2/我试图访问的文件

【问题讨论】:

  • 请告诉我们您尝试匹配的文件名类型,以便我们验证您的正则表达式语法。
  • 即使正则表达式语法错误,它也不会给我任何错误,它仍然给我一个空列表
  • 它返回空列表的原因是因为没有一个文件名与您的模式匹配。所以请检查你的文件路径。
  • 您可以尝试打开您的文件之一:fo = open("FEC00001_1.seq", "r") print "filename: ", fo.name 吗?
  • 还有可能发生的是工作文件夹不是您认为的那个。也许你可以添加 print os.getcwd()

标签: python regex glob


【解决方案1】:

glob.glob 是通过同时使用os.listdir()fnmatch.fnmatch() 函数来完成的。因此,在正确的位置进行搜索很重要。 考虑您的文件层次结构:-

/mainfolder/folder1/script.py
/mainfolder/folder2/files im trying to access

尝试以下方法:-

hi = glob.glob("../folder2/FEC[0-9][0-9][0-9][0-9][0-9]_[0-9].seq" )

【讨论】:

  • 非常感谢!这是一个文件夹层次结构问题
  • @David 如果可以解决您的问题,您能否投票并接受答案。将帮助我们俩进行一些回购。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
  • 2017-06-21
  • 2017-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多