line.strip() 我第二个陈述的因果关系

line.strip() cause and effects to my second statement

我的代码分为 3 个部分。我的第一部分告诉我第 1 行的条件是什么行号。我的第二部分告诉我第 2 行条件的行号。最后一部分将数字作为一个范围并打印出范围。

代码的第一部分:我得到 num1 的结果 6。

对于代码的第二部分,当我 运行 它本身时我得到 24,但是当我 运行 它与第 1 部分一起时我得到 18。

然后在第 3 部分,我索引文件并尝试打印出正确的行,但它们不起作用,因为当我同时满足这两个条件时,我的代码的第一部分正在更改数字 运行同时宁。

是否有更好的方法 运行 仅通过索引或仅通过枚举来处理此代码?我需要有用户输入并能够根据输入打印出一系列文件。

        #Python3.7.x
#
#
import linecache
#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.2"
begins = "Nmap scan report for"
fhand = open(report,'r')
beginsend = "\n"


#first statement
for num1,line1 in enumerate(fhand, 1):
    line1 = line1.rstrip()
    if line1.startswith(begins) and line1.endswith(target_ip):
        print(num1)
        print(line1)
        break
#second statement
for num2,line2 in enumerate(fhand, 1):
    line2 = line2.rstrip()
    if line2.startswith(beginsend) and num2 > num1:
        print(num2)
        print(line2)
        break
with open('ScanTest.txt') as f:
    linecount = sum(1 for line in f)

for i in range(num1,num2):

    print(linecache.getline("ScanTest.txt", i))

The first part of the code: I get a result of 6 for num1. for the second part of the code I get 24 when i run it by itself but a 18 when i run it with part 1.

显然第二部分继续读取第一部分停止的文件。 最小的变化是把

num2 += num1

在第二个循环之后,或者把第三个循环改成for i in range(num1, num1+num2):。第二个循环中的条件 and num2 > num1 将被删除。