Python 命令 -u 参数作用

  • shell 脚本中运行 python 命令时后面加了 -u 参数,例如:python -u xx.py,这个 -u 表示什么?

  • 标准输出:sys.stdout.write()标准错误:sys.stderr.write() 均是向屏幕打印的语句。

    print 语句也就是调用了 sys.stdout.write()print(obj) 实质上调用的是 sys.stdout.write(obj+'\n')print 在打印时会自动加个换行符,以下两行等价:

    sys.stdout.write('hello'+'\n')
    print 'hello'
    
  • 举例

    import sys
    sys.stdout.write("sdo-1 ")
    sys.stderr.write("sde-1 ")
    sys.stdout.write("sdo-2 ")
    sys.stderr.write("sde-2 ")
    
    • 上面输出 预想 的结果为:sdo-1 sde-1 sdo-2 sde-2

    • 上面输出 实际 的结果为:sde-1 sde-2 sdo-1 sdo-2

    • 原因是 python 缓存机制,虽然 stderrstdout 默认都是指向屏幕的,但是 stderr 是无缓存的,程序往 stderr 输出一个字符,就会在屏幕上显示一个。

    • stdout 是有缓存的,只有遇到换行或者积累到一定的大小,才会显示出来。这就是为什么上面的会最先显示两个 stderr 的原因。

  • -u 参数的使用

    • 使用:python -u xx.py

    • 有了上面的案例,就可以引出 python-u 参数了,python 命令加上 -u(unbuffered) 参数后会强制其 标准输出 也同 标准错误 一样 不通过缓存 直接打印到屏幕。

    • 再次执行得到的结果:sdo-1 sde-1 sdo-2 sde-2,就变成预期结果了。

  • print 函数的 flush 参数,使用 flush=True 之后,会在 print 结束之后,不管有没有达到条件,立即将内存中的东西显示到屏幕上,清空缓存:

    print('dzm', flush=True)
    
  • stdout.flush() 函数也有此效果:

    import sys
    sys.stdout.write('dzm')
    sys.stdout.flush()
    
  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡尔特斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值