line.strip() причина и следствие моего второго утверждения

У меня есть 3 части в моем коде. Моя первая часть говорит мне, что номер строки условие для line1. Моя вторая часть говорит мне, что номер строки условие для line2. Последняя часть делает числа в качестве диапазона и распечатывает диапазон.

Первая часть кода: я получаю результат 6 для num1.

Для второй части кода я получаю 24, когда я запускаю его сам по себе, и 18, когда я запускаю его с частью 1.

Затем в третьей части я индексирую файл и пытаюсь получить правильные строки для печати, но они не работают, потому что моя первая часть моего кода - это изменение чисел, когда оба условия выполняются одновременно.

Есть ли лучший способ запустить этот код с помощью только индексации или просто перечисления? Мне нужно иметь пользовательский ввод и иметь возможность распечатывать диапазон файла на основе ввода.

        #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))

1 ответ

Решение

Первая часть кода: я получаю результат 6 для num1. для второй части кода я получаю 24, когда я запускаю его сам по себе, и 18, когда я запускаю его с частью 1.

Очевидно, вторая часть продолжает чтение файла, в котором остановилась первая часть. Минимальное изменение - поставить

num2 += num1

после второго цикла или просто измените 3-й цикл на for i in range(num1, num1+num2):, Состояние and num2 > num1 во втором цикле должен быть удален.

Другие вопросы по тегам