将循环输出的完整转储到 Python 中的文本文件

我正在运行 for 循环以读取文件 (txt) 并将文件中的信息切片。


切片后,我试图将整个结果转储到文本文件中,代码如下:


import subprocess

jabber = open('C:/Users/Ahmed Mustafa/Desktop/Network Latency Measuring Tool/output.txt','r')

for line in jabber:

    if 'statistics' in line.lower():

        iploc = line.find("for ") +4

        iplocend = line.find(":",iploc)

        print(line[iploc:iplocend])

    if 'packet' in line.lower():

        sentloc = line.find("Sent")

        sentlocend = line.find(",",sentloc)

        print(line[sentloc:sentlocend])

    if 'packet' in line.lower():

        rxloc = line.find("Received")

        rxlocend = line.find(",",rxloc)

        print(line[rxloc:rxlocend])

    if 'packet' in line.lower():

        losloc = line.find("Lost")

        loslocend = line.find(" (",losloc)

        print(line[losloc:loslocend])

    if 'packet' in line.lower():

        lossloc = line.find("(")+1

        losslocend = line.find(" loss",lossloc)

        print(line[lossloc:losslocend] + " Loss")

    if 'minimum' in line.lower():

        maxloc = line.find("Maximum")

        maxlocend = line.find(",",maxloc)

        print(line[maxloc:maxlocend])

    if 'minimum' in line.lower():

        minloc = line.find("Minimum")

        minlocend = line.find(",",minloc)

        print(line[minloc:minlocend])

        result = line[minloc:minlocend]

    if 'minimum' in line.lower():

        avgloc = line.find("Average")

        avglocend = line.find(",",avgloc)

        print(line[avgloc:avglocend])

        result = line[avgloc:avglocend]

        print('-'*60)

jabber.close()


with open("outputp.txt", "w") as outputp:

    outputp.writelines(str(result))

此代码输出如下:


8.8.8.8

Sent = 4

Received = 4

Lost = 0

0% Loss

Maximum = 279ms

Minimum = 158ms

Average = 195ms

------------------------------------------------------------

127.0.0.1

Sent = 4

Received = 4

Lost = 0

0% Loss

Maximum = 0ms

Minimum = 0ms

Average = 0ms

------------------------------------------------------------

但是,当我检查名为“outputp.txt”的输出文件时,我发现只有最后一个结果如下所示:


Average = 0ms


慕尼黑的夜晚无繁华
浏览 124回答 1
1回答

缥缈止盈

问题通过result += x在每个 if 嵌套中包含也通过添加一些格式来解决,例如'\n' Also,result = ''在 for 循环之前添加以清除变量并防止数据累积,这是最终代码:import subprocessjabber = open('C:/Users/Ahmed Mustafa/Desktop/Network Latency Measuring Tool/output.txt','r')result = ""for line in jabber:    if 'statistics' in line.lower():        iploc = line.find("for ") +4        iplocend = line.find(":",iploc)        print(line[iploc:iplocend])        result += (line[iploc:iplocend] + '\n')    if 'packet' in line.lower():        sentloc = line.find("Sent")        sentlocend = line.find(",",sentloc)        print(line[sentloc:sentlocend])        result += (line[sentloc:sentlocend] + '\n')    if 'packet' in line.lower():        rxloc = line.find("Received")        rxlocend = line.find(",",rxloc)        print(line[rxloc:rxlocend])        result += (line[rxloc:rxlocend] + '\n')    if 'packet' in line.lower():        losloc = line.find("Lost")        loslocend = line.find(" (",losloc)        print(line[losloc:loslocend])        result += (line[losloc:loslocend] + '\n')    if 'packet' in line.lower():        lossloc = line.find("(")+1        losslocend = line.find(" loss",lossloc)        print(line[lossloc:losslocend] + " Loss")        result += (line[lossloc:losslocend] + " Loss"  + '\n')    if 'minimum' in line.lower():        maxloc = line.find("Maximum")        maxlocend = line.find(",",maxloc)        print(line[maxloc:maxlocend])        result += (line[maxloc:maxlocend] + '\n')    if 'minimum' in line.lower():        minloc = line.find("Minimum")        minlocend = line.find(",",minloc)        print(line[minloc:minlocend])        result += (line[minloc:minlocend] + '\n')    if 'minimum' in line.lower():        avgloc = line.find("Average")        avglocend = line.find(",",avgloc)        print(line[avgloc:avglocend])        result += (line[avgloc:avglocend] + '\n')        print('-'*60)jabber.close()with open("outputp.txt", "w") as outputp:    outputp.writelines(str(result))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python