我的目标是创建一个搜索输入文件中凭据的脚本。
我找到了无数的例子,即使在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éShild,@ 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()
答案 0 :(得分:2)
您正在使用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()