【问题标题】:How can I check if a string exists in any file within a directory / subdirectory?如何检查目录/子目录中的任何文件中是否存在字符串?
【发布时间】:2015-07-06 13:18:25
【问题描述】:

我有一个字符串列表,我想打印出目录中文件中不存在的任何字符串。 (我不想检查标题)

我了解如何遍历列表,但一直不知道如何在目录的所有文件中进行搜索。

这是我目前所得到的:

import fnmatch
import os

matches = []
for root, dirnames, filenames in os.walk('BrowserClient'):
  for filename in fnmatch.filter(filenames, 'file.png'):
    print filename

这仅搜索文件名,而我想搜索目录和子目录中的每个文件。

【问题讨论】:

  • 如果你只是想在一组文件中找到一个字符串作为一个独立的问题,你可以使用“grep”。
  • nb: grep 是所有 Unix(OS X 也是)计算机上的命令行工具。

标签: python bash directory


【解决方案1】:

你必须open文件:

import fnmatch
import os

targets = ['Hello', 'World', 'Foo', 'Bar']
matches = []
for root, dirnames, filenames in os.walk('BrowserClient'):
  for filename in fnmatch.filter(filenames, 'file.png'):
    for word in open(filename, 'r').read().split():
      for item in target:
        if word == item:
          matches.append([filename, item])

【讨论】:

  • 注意文件的大小。如果要读取一些大文件,执行 open(...).read() 可能会给您带来问题。
猜你喜欢
  • 2011-04-29
  • 2012-03-19
  • 1970-01-01
  • 1970-01-01
  • 2013-04-07
  • 2018-10-01
  • 2016-02-01
  • 2021-09-08
  • 2023-03-25
相关资源
最近更新 更多