line.strip () причина и следствие моего второго утверждения - PullRequest
0 голосов
/ 26 октября 2018

У меня есть 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 Ответ

0 голосов
/ 26 октября 2018

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

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

num2 += num1

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

...