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
во втором цикле должен быть удален.