【问题标题】:Printing multiple statements after each other一个接一个地打印多个语句
【发布时间】:2016-06-13 03:27:43
【问题描述】:

当我在 Spyder 中执行以下代码时:

print('a')
some_calculation
print('b')
print('c')
some_calculation
print('d')
print('e')
etc

我使用函数在字典中查找项目时,它不会将所有字符串输出到 Spyder 的控制台。例如:它会打印 'a' 和 'b' 然后什么都没有,在我按 ctrl+c 停止执行后,它也会突然打印 'c' (然后它正忙于第二次计算)。完成后,所有字母都已打印,但在执行代码时并未打印。

控制台似乎只正确处理了一个打印语句,并且在尝试显示下一个打印语句时,它已经开始计算冻结输出。有什么办法可以解决这个问题吗?

【问题讨论】:

  • 这很奇怪。你能提供代码库的实际代码吗?你提到的行为是不可能的。
  • 以换行符结尾的控制台输出应该立即出现。也许 Spyder 正在干扰这个?尝试在每次打印调用后添加sys.stdout.flush()
  • sys.stdout.flush() 成功了。我注意到我正在使用 print('a',end='') 所以下一个输出将在同一行上,这可能会使缓冲区混乱。刷新输出就可以了!谢谢

标签: python console spyder


【解决方案1】:

那是因为 print 使用了缓冲区。 由于您似乎使用的是 python 3,因此您可以在所有打印件中简单地使用flush=True,它们将立即被打印出来:

print('a', flush=True)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多