Python的解释器默认启用输出缓冲sys.stdout吗?
如果答案是肯定的,那么禁用它的所有方法是什么?
建议到目前为止:
-u命令行开关sys.stdout在每次写入后刷新的对象PYTHONUNBUFFEREDenv varsys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)是否有任何其他方式来设置一些全局标志sys/ sys.stdout程序执行过程中?
如果我有以下代码:
for x in range(10):
print x
Run Code Online (Sandbox Code Playgroud)
我会得到的输出
1
2
etc..
Run Code Online (Sandbox Code Playgroud)
我想要做的是不是打印换行符,而是要替换之前的值并用同一行上的新值覆盖它.
我最近切换操作系统,并使用更新的Python(2.7).在我的旧系统上,我曾经能够即时打印.例如,假设我有一个计算密集的for循环:
for i in range(10):
huge calculation
print i
Run Code Online (Sandbox Code Playgroud)
然后当代码完成每次迭代时,它会打印出来 i
但是,在我当前的系统上,python似乎缓存了标准输出,以便终端空白几分钟,然后打印:
1 2 3
简而言之.然后,再过几分钟,它会打印出来:
4 5 6
等等.如何在print声明到达声明后立即进行python打印?
我有一个用于仿真的python脚本,一个for循环要花很长时间,每个循环要花不同的时间,因此我.在每个循环后打印一个,以监视它运行的速度和经过的时间。for脚本运行时的声明。
for something:
do something
print '.',
Run Code Online (Sandbox Code Playgroud)
但是,当我在终端中的iPython中运行脚本时,点并不会一一打印,而是在循环结束时一次打印所有点,这使整个过程变得毫无意义。如何在运行时内联打印点?