【问题标题】:Python: search for words in a text file and print line with line number [duplicate]Python:在文本文件中搜索单词并打印行号[重复]
【发布时间】:2018-02-07 10:01:45
【问题描述】:

我的目标是创建一个在输入文件中搜索凭据的脚本。

我找到了无穷无尽的例子,甚至在 StackOverflow 上,它可以教我如何在文件中搜索一系列单词:

顺便说一句,当我尝试将这些规则应用到我的脚本时,它什么也没给我。

这是我的代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import argparse
import sys

parser = argparse.ArgumentParser()                              
parser.add_argument('-input', dest='input',help="input one or more files",metavar=None)                     
args = parser.parse_args()


GrabdirectoryFile = open(args.input,"r",encoding='UTF8')                    
directoryFile = GrabdirectoryFile.read()

HotWords = ['password', 'admin']

def search_for_lines(filename, words_list):
    words_found = 0
    for line_no, line in enumerate(filename):
        if any(word in line for word in words_list):
            print(line_no, ':', line)
            words_found += 1
    return words_found

search_for_lines(directoryFile,HotWords)

我尝试按照上面提供的 2 个链接上的说明进行操作,但没有成功。

代码肯定被执行并且Python 没有返回错误。 该文件包含许多单词以及一些“密码”和“管理员”,但没有返回任何行。

为什么?

编辑:

亲爱的@Kirk Broadhurst、@SIM、@André Schild、@kasperhj、@Garrett Hyde,我尝试关注您的link 并将我的代码替换为:

with open(args.input) as openfile:
    for line in openfile:
        for part in line.split():
            if "color=" in part:
                print (part)

但不幸的是仍然无法正常工作。 @Farhan.K 在下面提供了正确的解决方案,我不得不使用 readlines() 而不是 read()

【问题讨论】:

    标签: python parsing input grep


    【解决方案1】:

    您正在使用file.read() 读取文件,它返回一个字符串,但您需要一个列表。请改用file.readlines()。顺便说一句,最好使用 with 语句打开/关闭文件。

    替换

    GrabdirectoryFile = open(args.input,"r",encoding='UTF8')                    
    directoryFile = GrabdirectoryFile.read()
    

    与...

    GrabdirectoryFile = open(args.input,"r",encoding='UTF8')                    
    directoryFile = GrabdirectoryFile.readlines()
    

    使用with 语句更好:

    with open(args.input,"r",encoding='UTF8') as GrabdirectoryFile:
        directoryFile = GrabdirectoryFile.readlines()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-08
      • 1970-01-01
      • 2018-12-20
      • 1970-01-01
      • 2011-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多