python u_对python 命令的-u参数详解

缘起:

今天在看arcface的训练代码,在shell脚本中运行python 命令时后面加了-u 参数(python -u xx.py),于是对这个参数进行了下小研究。

准备知识

用网上的一个程序示例来说明,python中标准错误(std.err)和标准输出(std.out)的输出规则(标准输出默认需要缓存后再输出到屏幕,而标准错误则直接打印到屏幕):

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参数了。python命令加上-u(unbuffered)参数后会强制其标准输出也同标准错误一样不通过缓存直接打印到屏幕。

运行结果

stdout1stderr1stdout2stderr2

这样变成了预期的输出了。

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

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

以上这篇对python 命令的-u参数详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/426955.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux下anaconda3安装教程,Ubuntu18.04 安装 Anaconda3的教程详解

Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。 因为包含了大量的科学包,Anaconda 的下载文件比较大(约 531 MB),如果只需要某些包,或者需要节省带宽或存储空间,也可以使用…

实例14:python

#将一个正整数分解质因数。例如:输入90,打印出90233*5。 #对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: #(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 #(2)如…

call,apply,bind的用法与区别

1.call/apply/bind方法的来源 首先,在使用call,apply,bind方法时,我们有必要知道这三个方法究竟是来自哪里?为什么可以使用的到这三个方法? call,apply,bind这三个方法其实都是继承自…

while(1)和while(0)

while语句的原型是while(表达式)语句,当表达式为非0值时,执行while语句中的嵌套语句。 1.while(1)其中1代表一个常量表达式,它永远不会等于0。循环会一直执行下去。除非你设置break等类似的跳出循环语句循环才会中止。 2.while(i–)其中i是一…

幅值与峰峰值的计算_电厂振动测量、计算基础及汽轮机组振动标准!

法律顾问:张友全律师正文:电厂振动测量、计算基础及汽轮机组振动标准!1. 常用的振动测量参数常用的振动测量参数有振幅、振动速度(振速)、振动加速度。对应单位表示为:mm、mm/s、mm/s。 振幅是表象,定义为在波动或振动…

实例15:python

#利用条件运算符的嵌套来完成此题:学习成绩>90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 #!/usr/bin/python -- coding: UTF-8 -- score int(input(‘输入分数:\n’)) if score > 90: grade ‘A’ elif score &g…

对比分析

【课程1.3】 对比分析对比分析 → 两个互相联系的指标进行比较绝对数比较(相减) / 相对数比较(相除) 结构分析、比例分析、空间比较分析、动态对比分析 import numpy as np import pandas as pd import matplotlib.pyplot as plt…

平面设计中的网格系统pdf_深入浅出,带你认识网格系统与版式设计

设计分享 研习设 设计Hello大家好,这里是研习设计分享。时不时分享/新鲜/有趣/有料/设计资讯和案例,欢迎大家订阅关注!~预估阅读时间:10分钟ME研习设小研研:今天,和大家深入浅出,带你认识网格系…

qt支持Linux下word导出么,qt怎么实现保存到Word

回答:怎样将Word文档保存到桌面?平时我们在学习、工作的时候都会用到Word文档,当使用Word文档编辑完文件后需要进行保存。可以把Word文档保存到系统盘中,也可以直接保存到桌面上方便今后查找。那么Word文档怎么保存到桌面呢&#…

实例16:python

#输出指定格式的日期。 import time print(time.time()) print(time.localtime()) print(time.asctime()) print(time.strftime(’%Y-%m-%d %H:%M:%S’,time.localtime())) import datetime print(datetime.date.today()) print(datetime.date.today().strftime(’%d/%m/%Y’…

cad直线和圆弧倒角不相切_曲线操作-直线,圆弧,圆,倒斜角

直线该命令用于创建直线段。执行直线命令,主要有以下两种方式。菜单:选择“菜单”“捕入”一“曲线” 一“直线” 命令。功能区:单击“曲线”选项卡“曲线” 组中的“直线”按钮。执行上述操作后,系统打开如图4.13 所示的“直线”对话框。“直线”对话框…

WPF vs2015,vs2012 添加ArcObjects SDK

一:如果是vs2015,找到注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\下面的这两个,并且将名称和数据记下来。如图: (如果是vs2012,只添加InstallDir及其数据值就行了。) 二…

撤销 恢复快捷键 Linux,Linux Vim撤销和恢复撤销快捷键用法详解

使用 Vim 编辑文件内容时,经常会有如下 2 种需求:对文件内容做了修改之后,却发现整个修改过程是错误或者没有必要的,想将文件恢复到修改之前的样子。将文件内容恢复之后,经过仔细考虑,又感觉还是刚才修改过…

实例17:python

#输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 #!/usr/bin/python3 a input(‘请输入一串字符:’) 英文 0 空格 0 数字 0 其他 0 for i in a: if i.isalpha(): 英文 1 elif i.isspace(): 空格 1 elif i.isnumeric(): 数字 1 else: 其他…

python输出运行时间表_Python编程第十二课 了解程序运行的时间

了解了程序如何运行,我们就可以让我们写的程序变得更快。介绍在前面很长一段时间,我们学习建立一个搜索索引,它可以通过一次一次地查看每个条目来响应查询。当搜索索引检查关键字与我们要找的词相匹配时,就会把结果打印出来。但是…

bow 折叠键盘 linux,bow便携折叠蓝牙键盘体验

bow便携折叠蓝牙键盘体验2019-10-07 02:29:3913点赞8收藏0评论买了个键盘 bow的hb188似乎对蓝牙键盘一直以来都有一种执念,自从想要写点什么东西的想法在脑子里面生根发芽之后,一直都在找一种相对来讲比较便携的键盘。一开始的时候想买苹果的原装键盘&am…

Python isalpha()方法

描述 Python isalpha() 方法检测字符串是否只由字母组成。 语法 isalpha()方法语法: str.isalpha() 参数 • 无。 返回值 如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False 实例 以下实例展示了isalpha()方法的实例: #!/usr/bin…

admin——django自带数据库管理工具

admin是Django自带的数据库管理工具,是一个app 在admin.py中可以自己定制类来使admin数据库管理页面展现自己想要查看的信息 models.py from django.db import models# Create your models here.class Book(models.Model):title models.CharField(max_length32)pri…

python list存储方式_Python 之 将 list 存储为 .mat 文件

在 Python 中数据的矩阵操作常常会与 matlab 有数据交互,这就涉及到了在 Python 输出 .mat 文件。下面给出详细代码实现。存储 .mat 文件,涉及 scipy 中的 io 模块,以及相关方法 savemat 。主要代码如下:import numpy, scipy.iosc…

Python3 isspace()方法

Python3 字符串 描述 Python isspace() 方法检测字符串是否只由空白字符组成。 语法 isspace() 方法语法: str.isspace() 参数 • 无。 返回值 如果字符串中只包含空格,则返回 True,否则返回 False. 实例 以下实例展示了isspace()方法的实例&…