首页 > 解决方案 > 否则一无所获,但不是逐行迭代

问题描述

我在下面有一些代码。如果没有找到但不是每次迭代,我想提供 else 。目前,其他方法有效,但对于每一行来说:NOTHING FOUND NOTHING FOUND ..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!"

标签: python

解决方案


UPD:如果打算打印不包含的每一行,key并在每一行都很好时打印"Nothing Found!",那么请参考mnistic 的答案。我在这里描述的修复只会打印第一行(如果找到)不包含key.

Python 中的循环else子句for仅在循环未被 by 中断时才会执行break(有关详细信息,请参阅Python 文档)。因此,编写代码的正确方法是:

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循环内部对齐。


推荐阅读