我的代码包含3部分。我的第一部分告诉我第1行的条件是在什么行上。我的第二部分告诉我第二行的条件是什么行。最后一部分将数字作为范围并打印出范围。
代码的第一部分:num1得到6的结果。
对于代码的第二部分,当我自己运行它时,我得到24,但是当我与第1部分一起运行时,我得到18。
然后在第三部分,我为文件建立索引,并尝试获取正确的行以进行打印,但是它们不起作用,因为当我同时运行两个条件时,我的代码的第一部分正在更改数字。
是否只有索引或枚举可以更好地运行此代码?我需要用户输入,并且能够根据输入来打印出一系列文件。
#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))
答案 0 :(得分:1)
代码的第一部分:num1得到6的结果。对于代码的第二部分,当我自己运行它时,我得到24,但是当我与第1部分一起运行时,我得到18。
很明显,第二部分继续读取第一部分停止的文件。 最小的更改是放置
num2 += num1
在第二个循环之后,或者只是将第三个循环更改为for i in range(num1, num1+num2):
。第二个循环中的条件and num2 > num1
将被删除。