python命令 -u参数用法解析


Posted in Python onOctober 24, 2019

这篇文章主要介绍了python命令 -u参数用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

import sys
sys.stdout.write("stdout1")
sys.stderr.write("stderr1")
sys.stdout.write("stdout2")
sys.stderr.write("stderr2")

其中sys.stdout.write()和sys.stderr.write()均是向屏幕打印的语句。其实python中的print语句就是调用了sys.stdout.write(),例如在打印对象调用print obj 时,事实上是调用了 sys.stdout.write(obj+'\n')。

预想的结果是

stdout1stderr1stdout2stderr2

实际的结果为

stderr1stderr2stdout1stdout2

原因是python缓存机制,虽然stderr和stdout默认都是指向屏幕的,但是stderr是无缓存的,程序往stderr输出一个字符,就会在屏幕上显示一个;而stdout是有缓存的,只有遇到换行或者积累到一定的大小,才会显示出来。这就是为什么上面的会最先显示两个stderr的原因。

重点-

  • -u参数的使用:python命令加上-u(unbuffered)参数后会强制其标准输出也同标准错误一样不通过缓存直接打印到屏幕。
    • 运行结果:stdout1stderr1stdout2stderr2

  • 注意:以上结果是在python2下执行实现的,本人也在python3下进行了测试,python3下即便加上-u或者加上环境变量UNBUFFERED=1 运行起来stdout依旧写缓存(执行结果stderr1stderr2stdout1stdout2),具体原因没搞清,后续搞清后再来更新。

通过以上分析,不难看出尤其是在将python执行脚本输出到屏幕结果直接重定向到日志文件的情况下,使用-u参数,这样将标准输出的结果不经缓存直接输出到日志文件。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
探究Python的Tornado框架对子域名和泛域名的支持
May 02 Python
Python进阶篇之字典操作总结
Nov 16 Python
Python字符串格式化的方法(两种)
Sep 19 Python
一道python走迷宫算法题
Jan 22 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
Apr 18 Python
python实现图书馆研习室自动预约功能
Apr 27 Python
python调用摄像头显示图像的实例
Aug 03 Python
Python multiprocessing多进程原理与应用示例
Feb 28 Python
Python3 串口接收与发送16进制数据包的实例
Jun 12 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
Jun 23 Python
小结Python的反射机制
Sep 28 Python
Python序列化与反序列化相关知识总结
Jun 08 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
Oct 24 #Python
用Python解数独的方法示例
Oct 24 #Python
Python3 sys.argv[ ]用法详解
Oct 24 #Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
Oct 24 #Python
原生python实现knn分类算法
Oct 24 #Python
python KNN算法实现鸢尾花数据集分类
Oct 24 #Python
python爬虫爬取幽默笑话网站
Oct 24 #Python
You might like
PHP 转义使用详解
2013/07/15 PHP
PHP $_FILES中error返回值详解
2014/01/30 PHP
smarty模板引擎从配置文件中获取数据的方法
2015/01/22 PHP
Thinkphp5+uploadify实现的文件上传功能示例
2018/05/26 PHP
php session_decode函数用法讲解
2019/05/26 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
JQuery this 和 $(this) 的区别
2009/08/23 Javascript
js css样式操作代码(批量操作)
2009/10/09 Javascript
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
2010/05/15 Javascript
JavaScript 类型的包装对象(Typed Wrappers)
2011/10/27 Javascript
jquery移除button的inline onclick事件(已测试及兼容浏览器)
2013/01/25 Javascript
js获取多个tagname的节点数组
2013/09/22 Javascript
有关JavaScript中call()和apply() 的一些理解
2016/05/20 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
2017/01/05 Javascript
javascript对HTML字符转义与反转义
2018/12/13 Javascript
vue+element树组件 实现树懒加载的过程详解
2019/10/21 Javascript
[01:12:35]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
Python在线运行代码助手
2016/07/15 Python
200行自定义python异步非阻塞Web框架
2017/03/15 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
2019/02/21 Python
Python 3.8 新功能大揭秘【新手必学】
2020/02/05 Python
Python定时从Mysql提取数据存入Redis的实现
2020/05/03 Python
Python如何读写字节数据
2020/08/05 Python
CSS3制作翻转效果_动力节点Java学院整理
2017/07/11 HTML / CSS
细说CSS3中的选择符
2008/10/17 HTML / CSS
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
详细的大学生创业计划书模板
2014/01/27 职场文书
简历里的自我评价范文
2014/02/24 职场文书
开业典礼主持词
2014/03/21 职场文书
法人授权委托书格式
2014/04/08 职场文书
个人作风建设心得体会
2014/10/22 职场文书
团员个人年度总结
2015/02/26 职场文书
导游词之无锡丝业博物馆
2019/11/12 职场文书
canvas实现贪食蛇的实践
2022/02/15 Javascript
VUE中的v-if与v-show区别介绍
2022/03/13 Vue.js
MySQL优化及索引解析
2022/03/17 MySQL