如果我想使用带有逗号 (2.6) 的打印,只要您不使用 time.sleep(),它就可以正常工作。
如果使用带有逗号的打印,然后调用睡眠;如果您处于循环中,则字符串永远不会打印。
例子:
a=1
b=10
while a<b:
print "yes",
a=a+1
Run Code Online (Sandbox Code Playgroud)
这有效,您将看到 yes 打印在同一行上 10 次。但这行不通。
a=1
b=10
while a<b:
print "yes",
time.sleep(1)
a=a+1
Run Code Online (Sandbox Code Playgroud)
期望是会打印yes;然后等待一秒钟,然后将打印下一个是。相反,您会看到 10 秒后打印出一串 10 yes。
如果您使用 while 循环,情况也是如此;只要循环正在运行,并且您有一个 sleep 语句,字符串就不会打印到最后。
要使其工作,请删除逗号。如果您想指定要在每个字符串之间等待多长时间,则无法在同一行上打印字符串。
这是打印功能中的错误吗?
print不会自动刷新您的输出。您需要手动执行此操作。这可以通过使用sys模块的stdout.flush
import sys,time
a=1
b=10
while a<b:
print "yes",
sys.stdout.flush()
time.sleep(1)
a=a+1
Run Code Online (Sandbox Code Playgroud)
这是防止 Python 使用缓冲 stdio 管道的另一种方法(感谢abarnert)
使用-u选项执行您的程序,如
python -u filename.py
Run Code Online (Sandbox Code Playgroud)
从手册页。
-u
力stdin,stdout并且stderr是完全无缓冲。
Python3.3 的最后一种方法是使用函数的flush参数print
输出是否缓冲通常由文件决定,但如果
flush关键字参数为真,则流被强制刷新。在 3.3 版更改: 添加了
flush关键字参数。
| 归档时间: |
|
| 查看次数: |
822 次 |
| 最近记录: |