用Python枚举和打印行。

时间:2018-10-24 03:44:37

标签: python-3.x enumeration

好的,我正在构建一个小程序,它将帮助您选择Nmap结果:

#Python3.7.x
#
#
#
#report=input('Name of the file of Nmap Scan:\n')
#target_ip=input('Which target is the report needed on?:\n')
report = "ScanTest.txt"
target_ip = "10.10.100.1"
begins = "Nmap scan report for"
fhand = open(report,'r')
beginsend = "Network Distance:"

for num1,line in enumerate(fhand, 1):
    line = line.rstrip()
    if line.startswith(begins) and line.endswith(target_ip):
    print(num1)
for num2,line in enumerate(fhand, 1):
    line = line.rstrip()
    if line.startswith(beginsend):
        print(num2)

在我想做的事情中,我将获得扫描结果的第一部分“ target_ip”,并希望借此可以从那里读取行,直到txt行中断为止。 现在,这段代码为我所做的只是让我获得要开始的行号。 在代码的第二部分中,我尝试获取我需要的最后一行文本的行数。但它不会打印。我不确定是否要按照正确的方式进行操作,或者我看起来不够努力。   简而言之,找到我的行并打印,直到文本中断为止。

1 个答案:

答案 0 :(得分:0)

第一个循环将耗尽文件中的所有行。当第二个循环尝试运行时,没有更多的行可读取,并且循环立即退出。

如果您希望第一个循环在找到匹配的行时停止并允许第二个循环读取其余的行,则可以在break中添加一个if语句。

start_pattern = 'hello there'
end_pattern = 'goodblye now'
print_flag = False

with open('somefile.txt') as file:
    for line in file:
        if start_pattern in line:
            print_flag = True

        if print_flag:
            print line

        if end_pattern in line:
            break