如何搜索和返回多个文件?

时间:2015-01-18 20:12:48

标签: python search

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

3 个答案:

答案 0 :(得分:1)

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的实例。

答案 1 :(得分:0)

如果需要,您可以根据python中的要求创建自己的功能。到目前为止我还没有使用过python。我可以给你一般的想法或逻辑来实现这个功能。

  1. 从用户那里获取两个参数。第一个参数可以是要在多个文件中搜索的字符串或字符串模式。第二个参数可以是您要在其中执行搜索的文件夹的路径。
  2. 获得该文件夹的路径后,您可以遍历所有文件和文件夹到该路径,并可以在单个文件中搜索该字符串。
  3. 只需保存该文件的实例以及在任何数据结构中找到匹配项的文件位置。
  4. 完成所有文件和文件夹后,只需在控制台上打印出所有结果。
  5. 仅供参考:如果您想要这些功能以方便自己,那么任何操作系统都提供内置功能。 Windows有findstr,linux有grep功能。

答案 2 :(得分:0)

最简单的就是......:

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中,您可能需要自己进行全局操作。

在Python 3中,将raw_input更改为input,否则代码是相同的。

传递单词作为第一个参数进行搜索会更优雅,在没有文件参数的情况下调用时有什么好的默认操作等等,但所有这些小的复杂性都要等到你已经明确了你的确切要求(什么平台,什么是Python发布,等等)。