否则,没有找到任何东西,但没有逐行进行每次迭代

时间:2018-12-15 00:04:35

标签: python

我在下面有一些代码。我想提供一个else,如果没有找到,但不是每次迭代。目前,其他方法适用,但适用于每行: 没有发现 没有发现 ..etc。

如果在逐行遍历整个文件之后没有找到它们,则应该说什么也没找到...下面的上下文代码。

import argparse
parser = argparse.ArgumentParser(description='XSS Payload Search')
parser.add_argument('-p', action='store')
args = parser.parse_args()
key = args.p
with open("xss.txt") as f:
    found = False
    for line in f:
        if key not in line:
            line = line.rstrip()            
            found = True
    if found:
        print line
    else:
            print "Nothing Found!"

2 个答案:

答案 0 :(得分:2)

UPD::如果打算打印不包含key的每一行,并在每一行都可以的情况下打印"Nothing Found!",请参阅{{3 }}。我在此描述的修复程序只会打印不包含key的第一行(如果找到)。

Python中else循环的for子句仅在没有被break打破循环时执行(有关详细信息,请参见mnistic's answer)。因此,编写代码的正确方法是:

import argparse
parser = argparse.ArgumentParser(description='XSS Payload Search')
parser.add_argument('-p', action='store')
args = parser.parse_args()
key = args.p
with open("xss.txt") as f:
    for line in f:
        if key not in line:
            line = line.rstrip()
            print line
            break
    else:
        print "Nothing Found!"

此外,如果您观察到"Nothing Found!"每行都打印,则可能是您的缩进不正确,并且else子句与循环内的if对齐。

答案 1 :(得分:1)

只需维护一个布尔变量即可跟踪您是否找到了密钥:

import argparse
parser = argparse.ArgumentParser(description='XSS Payload Search')
parser.add_argument('-p', action='store')
args = parser.parse_args()
key = args.p
with open("xss.txt") as f:
    found = False
    for line in f:
        if key in line:
            line = line.rstrip()
            print line              
            found = True
    if not found:
        print "Nothing Found!"