【问题标题】:How to print on the same line in python without using ,如何在不使用 python 的情况下在同一行上打印,
【发布时间】:2012-02-04 20:44:53
【问题描述】:

目前,我在脚本中有以下代码:

print "Loading... "
html = urllib2.urlopen(url).read()
print "Done"

效果很好,它显示加载,下载完成时暂停,然后显示完成。唯一的问题是,“完成”在下一行。

理想情况下,它会在同一行,所以我会得到Loading... (pause) done

我尝试在第一个 print 语句的末尾添加一个逗号,但是虽然这实现了所需的输出,但它在加载 HTML 之前不会输出任何字符串,因为逗号告诉 python 等到完成打印声明(至少我认为是这样)。

那么如何在同一行打印“正在加载”和“完成”,同时仍然能够独立输出它们?

【问题讨论】:

    标签: python string


    【解决方案1】:

    标准输出是行缓冲的,你必须刷新它:

    sys.stdout.flush()
    

    【讨论】:

      【解决方案2】:

      use 可以使用 sys 模块

      sys.stdout.write("plop")
      

      【讨论】:

      • 不,os odule 中没有系统文件对象(stdin、stdout、stderr)
      【解决方案3】:

      sys.stdout 上调用flush() 似乎有预期的效果,“负载”由sleep() 模拟:

      #!/usr/bin/env python
      
      from sys import stdout
      from time import sleep
      
      print "Loading... ",
      stdout.flush()
      sleep(5)
      print "Done"
      

      因此,虽然它使用 , 打印,但您说您不想在问题中这样做,但它确实解决了问题。

      【讨论】:

        【解决方案4】:

        试试这个:

        import sys
        print "Loading... ",
        sys.stdout.flush()
        html = urllib2.urlopen(url).read()
        print "Done"
        

        【讨论】:

          【解决方案5】:

          这种方式也有效,但它的缺点是此后需要 Python 3 打印语法...

           from __future__ import print_function
          
           print("Loading...", end=" ")
           html = urllib2.urlopen(url).read()
           print("Done")
          

          【讨论】:

            【解决方案6】:

            打印("stack",end="")
            打印(“溢出”)

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2022-12-13
              • 1970-01-01
              • 2017-03-01
              • 1970-01-01
              • 1970-01-01
              • 2023-01-02
              • 1970-01-01
              相关资源
              最近更新 更多