如何跨多个文件搜索和return?

How to search and return across multiple files?

您好,我正在寻找一些帮助和一个起点,以帮助我在多个文件中找到一个词或一个短语,而不是 CTRL + F 并键入要在每个单独文件中搜索的词,我可以打开所有文件这些文件在python,运行一个搜索命令,它会给我文件名那个return关键字。任何帮助表示赞赏。

如果您愿意,您绝对可以根据 python 中的要求制作自己的功能。到目前为止,我还没有研究过 python。我可以为您提供实现此功能的总体思路或逻辑。

  1. 接受用户的两个论点。第一个参数可以是要在多个文件中搜索的字符串或字符串模式。第二个参数可以是您要在其中执行搜索的文件夹的路径。
  2. 获得该文件夹的路径后,您可以遍历所有文件和文件夹以找到该路径,并可以在单个文件中搜索该字符串。
  3. 只需保存该文件的实例和您在任何数据结构中找到匹配项的文件位置。
  4. 完成所有文件和文件夹后,只需在控制台上打印出所有结果。

仅供参考:如果您为了自己的方便而需要此类功能,那么任何操作系统都提供内置功能。 Windows 有 findstr 而 linux 有 grep 函数。

import os
import os.path

for fname in os.listdir('.'):
    if os.path.isfile(fname):
        f = open(fname)
        if 'mystring' in f.read():
            print fname
        f.close()

如果您需要搜索子目录,您将需要更多,但这将搜索当前目录中的每个文件以查找 mystring.

的实例

最简单的是...:[=​​13=]

import fileinput

word = raw_input('Word to search for: ')

for line in fileinput.input():
    if word in line:
        print(fileinput.filename())
        fileinput.nextfile()

这意味着在命令行上用感兴趣的文件调用——所以它非常专注于 Unix(因为在 Unix 中,shell 将为您扩展通配符并且程序接收文件名作为参数);在 Windows 中,您可能需要自己进行 globbing。

在Python3中,将raw_input改为input,其他代码相同

将要搜索的词作为第一个参数传递会更优雅,在没有文件参数的情况下调用时有一些很好的默认值等等,但是所有这些小问题都需要等待直到你更好地阐明了你的确切要求(什么平台,什么 Python 版本,等等)。