如何强制Python的打印功能输出到屏幕?
这不是禁用输出缓冲的重复- 链接的问题是尝试无缓冲输出,而这是更一般的.这个问题的最佳答案太强大或涉及到这个问题(他们不是很好的答案),这个问题可以在谷歌上找到一个相对新手.
我有一个用于仿真的python脚本,一个for循环要花很长时间,每个循环要花不同的时间,因此我.在每个循环后打印一个,以监视它运行的速度和经过的时间。for脚本运行时的声明。
for something:
do something
print '.',
Run Code Online (Sandbox Code Playgroud)
但是,当我在终端中的iPython中运行脚本时,点并不会一一打印,而是在循环结束时一次打印所有点,这使整个过程变得毫无意义。如何在运行时内联打印点?
我用 python 编程将近 2 年了,我在看一些旧代码时发现了一件非常奇怪的事情。
import random, sys, time
try:
while True:
print(' ', str(random.randint(100,999)), end='')
time.sleep(0.01)
except:
sys.exit()
Run Code Online (Sandbox Code Playgroud)
按照这段代码的语法,我的程序应该永远打印一个空格和一个从 100 到 999 的随机数,但这并没有发生。
当我运行此代码时,屏幕上没有任何显示,直到我按下 CTRL-C,即使删除 try 语句也不会改变任何内容。
我尝试更改控制台(Windows 终端、powershell 和 CMD),但什么也没发生。
请有人帮我解决这个问题吗?谢谢
如果我想使用带有逗号 (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 语句,字符串就不会打印到最后。
要使其工作,请删除逗号。如果您想指定要在每个字符串之间等待多长时间,则无法在同一行上打印字符串。
这是打印功能中的错误吗?
参数-u,-m意思是什么以及他们做了什么?
例如:
python -u my_script.py
Run Code Online (Sandbox Code Playgroud)
要么
python -m my_script.py
Run Code Online (Sandbox Code Playgroud)
我在哪里可以阅读它们?
python ×5
printing ×2
python-3.x ×2
flush ×1
ipython ×1
macos ×1
parameters ×1
python-2.7 ×1
terminal ×1