当我在Python中迭代某些行时,我希望它们出现在同一行并覆盖显示的最后一行,而不是显示在单独的行上。例如:
files = [ "pic1.jpg","pic2.jpg","pic3.jpg"]
for line in files:
print "Current file is:", line
目前的结果是:
Current file is: pic1.jpg
Current file is: pic2.jpg
Current file is: pic3.jpg
期望的结果是:
Current file is: pic3.jpg
..在“当前文件为:”之后显示其他2个文件。换句话说,结果全部适合一行,而不是多行,当前迭代覆盖前一项。
如何在Python for Windows(或Linux)上使用它?
谢谢。
答案 0 :(得分:2)
您可以使用\r
字符返回当前行的开头,但使用sys.stdout.write
代替print
函数(或语句),因为这会自动添加字符串末尾的\r\n
个字符。
这是一个示例函数,用于查看其工作原理:
from sys import stdout
from time import sleep
def print_same_line():
for i in range(10):
stdout.write("\rCounter: {0}.".format(i))
sleep(1)
stdout.write("\n")
print_same_line()
根据您的示例:
for line in files:
stdout.write("\rCurrent file is: " + line)
stdout.write("\n")
这是擦除之前印刷线的一个小技巧:
files = ["some_long_text_file.txt", "another_file.png", "short.jpg"]
previous = ""
for line in files:
stdout.write("\r" + " " * len(previous) + "\r" + line)
previous = line
希望这有帮助!
答案 1 :(得分:2)
我通常会这样做:
print "\r%d" % (x),
最后的逗号告诉print保持在同一行,\ r \ n是重新回车(没有换行)。 x将是一个变量,代码如下:
for x in xrange(100):
print "\r%5d" % (x),
编辑: @ abarnert的评论