刷新字符串输出 [Python]

Flushing output of strings [Python]

我正在构建一个应该检查服务器是否在线的数据包发送工具。好吧,我想将 TCP 数据包发送到选定的服务器,同时显示当前发送的数据包数量。我有下面的脚本来做我想做的事,但它不太管用:/。我也有一些代码我试图修改以实现相同的目的,但它是一种不同类型的显示...

我的代码:

nums = []
nums.append(x + 1)
_range = ['_']

for _ in _range:
    for x in nums:
        # sys.stdout.write("\b Packet [ %s ] sent!" % x)
        sys.stdout.write( " Packet [ %s ] sent!" % x )
        sys.stdout.flush()
        time.sleep(.5)
    pass

和正确的代码:

#!/usr/bin/env python

import sys
import time


print "loading...\",
while True:
    syms = ['\', '|', '/', '-']
    bs = '\b'

    for _ in range(5):
        for sym in syms:
            sys.stdout.write("\b%s" % sym)
            sys.stdout.flush()
            time.sleep(.5)
    pass

print("\n")

我需要与正确代码相同的东西,除了它可以实时显示发送的数据包数量。示例:

数据包 [3] 已发送!

(之前的文本已清除)

数据包 [4] 已发送!

(之前的文本已清除)

数据包 [5] 已发送!

(之前的文本已清除)

等等...

我希望你能明白我在这里想要描述的内容。如果没有,请索取更多信息,我会尽力解释。对这个问题感到抱歉,我确定这是一个简单的修复,但老实说,我仍在学习 python.. :/

提前致谢!

您需要在 sys.stdout.write:

中输入 \r return
sys.stdout.write( " \rPacket [ %s ] sent!" % x )

这样下一次打印会覆盖它。