相关疑难解决方法(0)

禁用输出缓冲

Python的解释器默认启用输出缓冲sys.stdout吗?

如果答案是肯定的,那么禁用它的所有方法是什么?

建议到目前为止:

  1. 使用-u命令行开关
  2. 包装sys.stdout在每次写入后刷新的对象
  3. 设置PYTHONUNBUFFEREDenv var
  4. sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)

是否有任何其他方式来设置一些全局标志sys/ sys.stdout程序执行过程中?

python stdout buffered

487
推荐指数
10
解决办法
25万
查看次数

动态打印一行

我想做几个语句,给出标准输出,而不会在语句之间看到换行符.

具体来说,假设我有:

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)

更妙的是,是否可以打印单号最后一个号码,所以只有一个号码在屏幕上在同一时间?

python printing

283
推荐指数
9
解决办法
49万
查看次数

在Python中打印多个参数

这只是我的代码片段:

print("Total score for %s is %s  ", name, score)
Run Code Online (Sandbox Code Playgroud)

但我希望它打印出来:

"(姓名)总分为(得分)"

where name是列表中的变量,score是一个整数.这是Python 3.3,如果这有帮助的话.

python printing arguments python-3.x

283
推荐指数
10
解决办法
84万
查看次数

如何防止Python打印添加换行符或空格?

在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语句是同一循环的不同迭代,所以我不能只使用+运算符.

python printing formatting python-2.x

232
推荐指数
10
解决办法
27万
查看次数

如何在python中覆盖以前的打印到stdout?

如果我有以下代码:

for x in range(10):
     print x
Run Code Online (Sandbox Code Playgroud)

我会得到的输出

1
2
etc..
Run Code Online (Sandbox Code Playgroud)

我想要做的是不是打印换行符,而是要替换之前的值并用同一行上的新值覆盖它.

python

97
推荐指数
11
解决办法
13万
查看次数

如何在打印声明后抑制换行符?

我读到在打印语句后禁止换行,你可以在文本后面加一个逗号.这里的示例看起来像Python 2. 如何在Python 3中完成?

例如:

for item in [1,2,3,4]:
    print(item, " ")
Run Code Online (Sandbox Code Playgroud)

需要更改哪些内容才能将它们打印在同一行上?

python python-3.x

52
推荐指数
2
解决办法
9万
查看次数

Python:如何在同一行上打印,清除之前的文本?

\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

打印到同一行时,在较长的行之后写较短的行的最佳方法是什么?

python stdout python-3.x

10
推荐指数
1
解决办法
6480
查看次数

为什么包含'end ='参数的python print语句在while循环中表现不同?

我在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='').

python while-loop

6
推荐指数
2
解决办法
5443
查看次数

如何在同一行python上等待和打印

好吧,所以我在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.请让我知道,这将是一个很大的帮助

python vpython

5
推荐指数
1
解决办法
2839
查看次数

Python:在多线程应用程序中为每个线程打印到单独的 bash 行

我在这篇文章中看到,很容易通过以下方式在同一行上打印(覆盖以前的内容):

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 multithreading

5
推荐指数
1
解决办法
2106
查看次数