Python的解释器默认启用输出缓冲sys.stdout吗?
如果答案是肯定的,那么禁用它的所有方法是什么?
建议到目前为止:
-u命令行开关sys.stdout在每次写入后刷新的对象PYTHONUNBUFFEREDenv varsys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)是否有任何其他方式来设置一些全局标志sys/ sys.stdout程序执行过程中?
我想做几个语句,给出标准输出,而不会在语句之间看到换行符.
具体来说,假设我有:
for item in range(1,100):
print item
Run Code Online (Sandbox Code Playgroud)
结果是:
1
2
3
4
.
.
.
Run Code Online (Sandbox Code Playgroud)
如何让它看起来像:
1 2 3 4 5 ...
Run Code Online (Sandbox Code Playgroud)
更妙的是,是否可以打印单号在最后一个号码,所以只有一个号码在屏幕上在同一时间?
这只是我的代码片段:
print("Total score for %s is %s ", name, score)
Run Code Online (Sandbox Code Playgroud)
但我希望它打印出来:
"(姓名)总分为(得分)"
where name是列表中的变量,score是一个整数.这是Python 3.3,如果这有帮助的话.
在python中,如果我说
print 'h'
Run Code Online (Sandbox Code Playgroud)
我收到了字母h和换行符.如果我说
print 'h',
Run Code Online (Sandbox Code Playgroud)
我收到了字母h而没有换行.如果我说
print 'h',
print 'm',
Run Code Online (Sandbox Code Playgroud)
我收到了字母h,空格和字母m.如何防止Python打印空间?
print语句是同一循环的不同迭代,所以我不能只使用+运算符.
如果我有以下代码:
for x in range(10):
print x
Run Code Online (Sandbox Code Playgroud)
我会得到的输出
1
2
etc..
Run Code Online (Sandbox Code Playgroud)
我想要做的是不是打印换行符,而是要替换之前的值并用同一行上的新值覆盖它.
我读到在打印语句后禁止换行,你可以在文本后面加一个逗号.这里的示例看起来像Python 2. 如何在Python 3中完成?
例如:
for item in [1,2,3,4]:
print(item, " ")
Run Code Online (Sandbox Code Playgroud)
需要更改哪些内容才能将它们打印在同一行上?
\r在 Python 中,您可以使用移回行首在同一行上进行打印。
这对于进度条或增加百分比计数器非常有效,例如:Python print on same line
但是,当打印长度可能会减少的行时,这会将前几行文本保留在那里,例如:
import sys
for t in ['long line', '%']:
sys.stdout.write(t + '\r')
sys.stdout.write('\n')
Run Code Online (Sandbox Code Playgroud)
将终端文本保留为:%ong line。
打印到同一行时,在较长的行之后写较短的行的最佳方法是什么?
我在MacOSX上运行python版本2.7.3.
考虑这段代码:
from __future__ import print_function
import time
x = 0
while x < 5:
print(x)
x += 1
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
如果我运行这个脚本,我会观察到我期望的输出:数字0通过附加到每个数字4的\n字符.此外,每暂停一秒后显示每个数字.
0
1
2
3
4
Run Code Online (Sandbox Code Playgroud)
现在考虑这个代码块:
from __future__ import print_function
import time
x = 0
while x < 5:
print(x, end='')
x += 1
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
输出是我所期望的,01234没有\n's,但时间是出乎意料的.该过程不是在一秒钟暂停后显示每个数字,而是等待四秒钟,然后显示所有五个数字.
为什么print('string')表现与print('string', end='')while循环不同?有没有办法显示没有换行符的字符,一次一秒?我尝试过sys.stdout.write(str(x)),但它的行为方式与之相同print(end='').
好吧,所以我在vpython中做这个微小的倒计时功能,我现在正在这样做
import time
print "5"
time.sleep(1)
print "4"
time.sleep(1)
print "3"
time.sleep(1)
print "2"
time.sleep(1)
print "1"
time.sleep(1)
print "0"
time.sleep(1)
print "blastoff"
Run Code Online (Sandbox Code Playgroud)
当然,这实际上不是我的代码,但它很好地证明了它.所以我想要做的不是打印它5 4 3 2 1 Blastoff我希望54321 Blastoff在同一条线上.我怎么会等待一秒钟并在同一行打印charecter.请让我知道,这将是一个很大的帮助
我在这篇文章中看到,很容易通过以下方式在同一行上打印(覆盖以前的内容):
print "Downloading " + str(a) " file of " + str(total),
Run Code Online (Sandbox Code Playgroud)
(注意末尾的逗号)。这会导致
>>> Downloading 1 file of 20
Run Code Online (Sandbox Code Playgroud)
每次执行打印时,都会更新同一行。
这在单线程应用程序中效果很好,但不适用于多线程。
在 python 2.7 中,多个线程如何在终端中打印到自己的行?
期望的结果看起来像这样:
>>> Thread 1: Downloading 11 file of 20
>>> Thread 2: Downloading 4 file of 87
>>> Thread 3: Downloading 27 file of 32
>>> Thread 4: Downloading 9 file of 21
Run Code Online (Sandbox Code Playgroud) python ×10
printing ×3
python-3.x ×3
stdout ×2
arguments ×1
buffered ×1
formatting ×1
python-2.x ×1
vpython ×1
while-loop ×1