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 self,cls,decorator的理解
Jul 13 Python
实例讲解Python中的私有属性
Aug 21 Python
Python中利用函数装饰器实现备忘功能
Mar 30 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
Oct 09 Python
python K近邻算法的kd树实现
Sep 06 Python
Python实现 PS 图像调整中的亮度调整
Jun 28 Python
Python爬虫:将headers请求头字符串转为字典的方法
Aug 21 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
Sep 02 Python
python base64库给用户名或密码加密的流程
Jan 02 Python
Django框架获取form表单数据方式总结
Apr 22 Python
利用python对mysql表做全局模糊搜索并分页实例
Jul 12 Python
如何更换python默认编辑器的背景色
Aug 10 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
优化NFR之一 --MSSQL Hello Buffer Overflow
2006/10/09 PHP
PHP 一个比较完善的简单文件上传
2010/03/25 PHP
利用php绘制饼状图的实现代码
2013/06/07 PHP
php通过淘宝API查询IP地址归属等信息
2015/12/25 PHP
jquery nth-child()选择器的简单应用
2010/07/10 Javascript
caller和callee的区别介绍及演示结果
2013/03/10 Javascript
JS实现一键回顶功能示例代码
2013/10/28 Javascript
使用JS获取当前地理位置方法汇总
2014/12/18 Javascript
jquery插件uploadify实现带进度条的文件批量上传
2015/12/13 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
2016/12/25 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
vue之数据交互实例代码
2017/06/16 Javascript
浅谈Node 调试工具入门教程
2018/03/20 Javascript
nodejs连接mysql数据库及基本知识点详解
2018/03/20 NodeJs
p5.js实现斐波那契螺旋的示例代码
2018/03/22 Javascript
javascript canvas时钟模拟器
2020/07/13 Javascript
[01:00:44]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第三局
2016/03/04 DOTA
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
[00:20]TI9观赛名额抽取Ⅱ
2019/07/24 DOTA
python里大整数相乘相关技巧指南
2014/09/12 Python
Python socket编程实例详解
2015/05/27 Python
python机器学习理论与实战(四)逻辑回归
2018/01/19 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
2018/02/07 Python
对django2.0 关联表的必填on_delete参数的含义解析
2019/08/09 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
英国电视和家用电器购物网站:rlrdistribution.co.uk
2018/11/20 全球购物
中软Java笔试题
2012/11/11 面试题
初中新生军训方案
2014/05/13 职场文书
应届生自荐信
2014/06/30 职场文书
拾金不昧感谢信
2015/01/21 职场文书
特岗教师个人总结
2015/02/10 职场文书
2016年感恩节活动总结大全
2016/04/01 职场文书
在redisCluster中模糊获取key方式
2021/07/09 Redis
go开发alertmanger实现钉钉报警
2021/07/16 Golang
vue+iview实现手机号分段输入框
2022/03/25 Vue.js