line.strip()对第二条语句的影响

时间:2018-10-26 06:35:45

标签: python-3.x indexing enumerate

我的代码包含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))

1 个答案:

答案 0 :(得分:1)

  

代码的第一部分:num1得到6的结果。对于代码的第二部分,当我自己运行它时,我得到24,但是当我与第1部分一起运行时,我得到18。

很明显,第二部分继续读取第一部分停止的文件。 最小的更改是放置

num2 += num1
在第二个循环之后

,或者只是将第三个循环更改为for i in range(num1, num1+num2):。第二个循环中的条件and num2 > num1将被删除。