Python - sys.stdout.flush() 在 python 2.7 中的 2 行
Python - sys.stdout.flush() on 2 lines in python 2.7
我正在用 python 2.7
写作
我有以下代码:
a = 0
b = 0
while True:
a += 1
b += 1
print str(a)
print str(b)
输出如下:
1
1
2
2
3
3
4
....
并想用 stdout.flush()
刷新这两行。代码看起来像这样,但它不起作用..
import sys
a = 0
b = 0
while True:
a += 1
b += 1
sys.stdout.write(str(a)+"\n")
sys.stdout.write(str(b)+"\r")
sys.stdout.flush()
这会产生如下输出:
1 #1
2 #1 ->#2
3 #2 ->#3
4 #3 ->#4
...
我知道这是因为\r
只跳到第二行的开头,并从下一个打印开始..
如何将光标设置到第一行而不是第二行的开头?
这样它只会刷新 2 行:
n #1 ->#2 ->#3 ->#4 ->#.....
n #1 ->#2 ->#3 ->#4 ->#.....
希望有人能明白我的意思。
从当前行转到上一行,这必须写在标准输出上\x1b[1A
CURSOR_UP_ONE = '\x1b[1A'
要擦除行 \x1b[2K
的内容必须写入标准输出。
ERASE_LINE = '\x1b[2K'
这样你就可以到上面一行并覆盖那里的数据。
data_on_first_line = CURSOR_UP_ONE + ERASE_LINE + "abc\n"
sys.stdout.write(data_on_first_line)
data_on_second_line = "def\r"
sys.stdout.write(data_on_second_line)
sys.stdout.flush()
了解更多详情http://www.termsys.demon.co.uk/vtansi.htm#cursor
和
我正在用 python 2.7
写作我有以下代码:
a = 0
b = 0
while True:
a += 1
b += 1
print str(a)
print str(b)
输出如下:
1
1
2
2
3
3
4
....
并想用 stdout.flush()
刷新这两行。代码看起来像这样,但它不起作用..
import sys
a = 0
b = 0
while True:
a += 1
b += 1
sys.stdout.write(str(a)+"\n")
sys.stdout.write(str(b)+"\r")
sys.stdout.flush()
这会产生如下输出:
1 #1
2 #1 ->#2
3 #2 ->#3
4 #3 ->#4
...
我知道这是因为\r
只跳到第二行的开头,并从下一个打印开始..
如何将光标设置到第一行而不是第二行的开头?
这样它只会刷新 2 行:
n #1 ->#2 ->#3 ->#4 ->#.....
n #1 ->#2 ->#3 ->#4 ->#.....
希望有人能明白我的意思。
从当前行转到上一行,这必须写在标准输出上\x1b[1A
CURSOR_UP_ONE = '\x1b[1A'
要擦除行 \x1b[2K
的内容必须写入标准输出。
ERASE_LINE = '\x1b[2K'
这样你就可以到上面一行并覆盖那里的数据。
data_on_first_line = CURSOR_UP_ONE + ERASE_LINE + "abc\n"
sys.stdout.write(data_on_first_line)
data_on_second_line = "def\r"
sys.stdout.write(data_on_second_line)
sys.stdout.flush()
了解更多详情http://www.termsys.demon.co.uk/vtansi.htm#cursor
和