【问题标题】:Why is my glob.glob loop not iterating through all text files in folder?为什么我的 glob.glob 循环没有遍历文件夹中的所有文本文件?
【发布时间】:2016-07-19 00:49:25
【问题描述】:

我正在尝试使用 python 3 从包含文本文档的文件夹中读取内容。具体来说,这是对 LingSpam 电子邮件垃圾邮件数据集的修改。我期望我编写的代码返回所有 1893 个文本文档名称,但是,代码反而返回前 420 个文件名。我不明白为什么它的文件名总数不足。有什么想法吗?

if not os.path.exists('train'):  # download data
  from urllib.request import urlretrieve
  import tarfile
  urlretrieve('http://cs.iit.edu/~culotta/cs429/lingspam.tgz', 'lingspam.tgz')
  tar = tarfile.open('lingspam.tgz')
  tar.extractall()
  tar.close()
abc = []
for f in glob.glob("train/*.txt"):
  print(f)
  abc.append(f)
print(len(abc))

我已尝试更改 glob 参数,但仍然没有成功。

编辑:显然我的代码适用于除我之外的所有人。这是我的output

【问题讨论】:

  • 你的代码对我来说很好用:asciinema.org/a/39x9vuca48gd7fieugpkicbbt
  • 你试过使用绝对路径吗?
  • 我也确认。它对我有用。
  • 嗯。这很奇怪。为什么它对你们的作用与对我的作用不同?
  • 将标题读作“glob.glob gloop”。为有趣的标题点赞

标签: python python-3.x text glob


【解决方案1】:

成功!问题是

if not os.path.exists('train'):  # download data

为了检查我的输出,我实际上已经将文件下载到了我的计算机上,并且由于这一行检查了该文件夹是否存在,并且它确实存在,所以它引起了问题。我从我的机器上删除了文件,现在它可以正常工作了,尽管我怀疑它正在运行

  from urllib.request import urlretrieve
  import tarfile
  urlretrieve('http://cs.iit.edu/~culotta/cs429/lingspam.tgz', 'lingspam.tgz')
  tar = tarfile.open('lingspam.tgz')
  tar.extractall()
  tar.close()

如果没有 if 语句也会有同样的结果。

【讨论】:

    猜你喜欢
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    相关资源
    最近更新 更多