sys.stdout.write()方法——标准输出打印

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

语法参考

Sys.Stdout是sys模块中的标准输出对象,可以实现将数据向屏幕、文件等进行输出。Sys.Stdout通过write 方法实现数据的标准输出。Sys.Stdout.write()方法的基本用法如下:

sys.stdout .write(obj)

obj:输出的内容或文件

事实上,使用print()方法进行打印输出时,其实是将内容传递给sys.stdout标准输出,然后通过sys.stdout.write()方法进行输出,Sys.Stdout.write() 输出完光标会停留在输出内容的最后位置。而print()方法输出后光标回跳到下一行行首,所以要实现等同效果,需要在Sys.Stdout.write()输出时追加一个换行符,如代码:

print('hello')

等同于:

import sys     # 调用sys模块

sys.stdout.write('hello' + '\n')   

    快用锦囊

锦囊1:常规输出内容到屏幕

sys.stdout.write()方法可以直接进行输出,配合转义字符可以进行换行、对齐等操作,在使用前一定先调用sys模块,下面举例一些常规的输出,代码如下:

import sys     # 调用sys模块

sys.stdout.write('用户名称:')   # 正常输出,光标在最后一个字符后面

sys.stdout.write('张三丰')       # 在上一个光标处输出

sys.stdout.write('\n用户密码:')  # 先换行输出,光标在最后一个字符后面

sys.stdout.write('********\n')    # 在上一个光标处输出,输出完内容后换行到下一行行首

sys.stdout.write('确认密码:')

sys.stdout.write('********\n')    # 输出完内容后换行到下一行行首

sys.stdout.write('商品名称\t')    # 输出完内容后增加一个制表符距离

sys.stdout.write('商品价格\t')    # 输出完内容后增加一个制表符距离

sys.stdout.write('采购数量\t')    # 输出完内容后增加一个制表符距离

sys.stdout.write('商品金额')

程序运行结果如下:

用户名称:张三丰

用户密码:********

确认密码:********

商品名称    商品价格    采购数量    商品金额

锦囊2:在一行输出连续延时文字

在编写程序时,有时需要动态输出一些提示性文字,如程序加载、连网、或杀毒时,如果需要用户等待一点时间,可以输出提示用户并显示进度。下面代码实现在提示文字后动态输出程序加载进度:

sys.stdout.write('程序正在安装,请稍后')

sys.stdout.write("\n")

for in range(20):

    sys.stdout.write('#')

    time.sleep(0.3)

程序运行效果如图1、图2所示:

如果动态输出的文字希望在原始位置跑马灯似的循环输出,需要将开始文字先定位到行首,然后输出并刷新。转移字符"\r"可以使光标回到行首,如代码:

sys.stdout.write("\r")

刷新输出使用flush()方法,如:

sys.stdout.flush()

下面代码实现动态跑马灯输出效果,每次循环输出1到6个状态,往复进行。代码如下:

import sys     # 调用sys模块

import time

sys.stdout.write('动态输出跑马灯文字\n')

for in range(20):

    for in range(6):

        sys.stdout.write('.')

        sys.stdout.flush()

        time.sleep(0.3)

输出效果如图3、图4、图5所示:

锦囊3:原位置动态输出文字或图标

在某些程序开发中,经常需要在某位置动态重复输出一些内容,如杀毒软件、计数程序、倒计时程序等。下面代码输出杀毒软件杀毒时提示用户杀毒时间的的动态模拟显示,代码如下:

import sys     # 调用sys模块

import time

sys.stdout.write('杀毒程序正在全盘检查,请稍后\n')

for in range(20):

    sys.stdout.write("\r")

    if i%2==1 :

        sys.stdout.write("\\")

    else:

        sys.stdout.write("/")

    sys.stdout.flush()

    time.sleep(0.3)

程序运行结果图6、图7所示

如果是计算程序,需要在原位置动态进行计数,如进行30个数的计数,代码如下:

import sys     # 调用sys模块

import time

sys.stdout.write("\n")

sys.stdout.write('计数程序\n')

i=0

while i<30:

    i=i+1

    sys.stdout.write("\r")

    sys.stdout.write(str(i))

    sys.stdout.flush()

    time.sleep(0.5)

程序运行效果如图8、图9、图10所示:

倒数程序是在输入一个倒数数字后,按照输入的数字倒数的程序。倒数的数字需要动态在原始位置输出,如进行简单的60个数的倒数程序,代码如下:

import sys     # 调用sys模块
import time
sys.stdout.write("\n")
sys.stdout.write('倒数程序\n')
i=int(input('请输入倒数的数字:'))
while i>0:
    i=i-1
    sys.stdout.write("\r")
    sys.stdout.write(str(i))
    sys.stdout.flush()
    time.sleep(1)

程序运行效果如图11、图12所示

    应用场景

场景一:输出程序安装的进度条

安装程序时,通常都会有安装进度显示,以便让用户了解安装进度和时间。安装进度一般要用刻度显示安装进度情况,用百分比显示安装比例,如下程序,通过“|”格数显示安装进度,用百分比显示安装比例,设置batch参数数值可以控制安装格数和进度。代码如下:

import sys      #  调入系统模块

import time     #  调入时间模块

batch=1     # 控制安装的进度格

for in range(int(100/batch)):   # 100/batch 进度次数

    sys.stdout.write("\r")    # 回到行首

    sys.stdout.write('|'*i*batch + str(i*batch)+'%')   # 输出进度和百分比

    sys.stdout.flush()   # 刷新输出

    time.sleep(1)        # 1秒暂停再执行

程序运行效果如图13、图14、图15所示:

图13  安装进度显示

图14  安装进度显示

图15  安装进度显示

场景二:动态输出当前时间

在程序运行时,如果要动态显示当前的时间,程序运行的时间,该怎么实现呢?同样,使用sys.stdout流,结合时间模块,可以很容易实现,代码如下:

import sys      #  调入系统模块

import time     #  调入时间模块

sys.stdout.write('动态输出时间\n')

i=50

while i>0:

    sys.stdout.write("\r")

    sys.stdout.flush()

    sys.stdout.write(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime() ))

    time.sleep(0.5)

程序运行效果如图16所示:

图16  时间输出

场景三:输出内容到文本文件

使用sys.stdout流不但可以将内容输出到屏幕,还可以输出到文件,代码如下:

import sys      #  调入系统模块
with open('mingri.txt','w') as f:
    sys.stdout=f
    print('hello world')

打开mingri.txt文件,我们发现“hello world”被写入到该文件中,如图17所示:

图17  mingri.txt文件的内容

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

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

相关文章

JavaScript基础知识 面试题1

数据类型&#xff1a; Number&#xff1a;表示数字&#xff0c;包括整数和浮点数。 String&#xff1a;表示文本数据。 Boolean&#xff1a;表示逻辑值&#xff0c;只有两个值&#xff1a;true和false。 Null&#xff1a;表示空值或者不存在的对象。 Undefined&#xff1a;表示…

RK3588 Android13 TvSetting 中性能浮窗RAM显示bug

前言 电视产品,客户发现在设备偏好设置->高级设置->性能浮窗菜单里显示的 RAM 大小是错误的, 要求改成正确的,并且屏幕密度修改后,这个浮窗显示不全,也需要一起处理。 效果图 TvSetting 部分修改文件清单 bug 原因在于 Formatter.formatFileSize 这个 API,我们…

Spring Boot中使用Swagger生成API文档

Spring Boot中使用Swagger生成API文档 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;在现代的软件开发中&#xff0c;良好的API文档是团队协作和开发效率不可或…

如何使用Java中的WebSocket?

如何使用Java中的WebSocket&#xff1f; 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们来探讨如何在Java中使用WebSocket技术&#xff0c;实现高效的实…

码题杯:我会修改图

原题链接&#xff1a;码题集OJ-我会修改图​​​​​​ 题目大意&#xff1a;给你一张n个点&#xff08;编号为1∼n&#xff09;&#xff0c;m条边&#xff08;编号为1∼m&#xff09;的无向图&#xff0c;图上每个点都有一个点权&#xff0c;权值分别为a1​,a2​,…,an​&…

华为---VRRP基本配置(一)

10、VRRP 10.1 VRRP基本配置 10.1.1 原理概述 随着Internet的发展&#xff0c;人们对网络可靠性的要求越来越高。对于用户来说&#xff0c;能够时刻与外部网络保持通信非常重要&#xff0c;但内部网络中的所有主机通常只能设置一个网关IP地址&#xff0c;通过该出口网关实现…

CVE-2020-26048(文件上传+SQL注入)

简介 CuppaCMS是一套内容管理系统&#xff08;CMS&#xff09;。 CuppaCMS 2019-11-12之前版本存在安全漏洞&#xff0c;攻击者可利用该漏洞在图像扩展内上传恶意文件&#xff0c;通过使用文件管理器提供的重命名函数的自定义请求&#xff0c;可以将图像扩展修改为PHP&#xf…

Qt:2.环境搭建

目录 1.搭建需要的三个组件&#xff1a; 2.下载Qt安装包&#xff1a; 3.安装qt&#xff1a; 4.配置环境变量&#xff1a; 1.搭建需要的三个组件&#xff1a; C编译器&#xff08;gcc&#xff0c;cl.exe等&#xff09;Qt的SDK&#xff1a;软件开发工具包&#xff0c;Windows…

QT QML使用RabbitMQ

文章目录 步骤1:安装依赖步骤2:创建C++类处理RabbitMQ通信步骤3:将C++类与QML绑定步骤4:创建QML界面步骤5:配置项目文件总结要在Qt中使用RabbitMQ,并且使用QML作为界面部分,你需要结合Qt的C++和QML模块。以下是一个示例项目,它演示了如何使用C++库 SimpleAmqpClient 来…

更改网页标题(方法2)

如果你想要在多个页面中统一地改变特定页面的标题&#xff0c;而不是在每个页面中单独嵌入JavaScript代码&#xff0c;你可以使用一个外部JavaScript文件&#xff0c;并在需要改变标题的页面上引用这个文件。这样&#xff0c;你就不需要在每个页面上重复相同的代码了。 以下是…

Apache Doris 2.1.4 版本正式发布

亲爱的社区小伙伴们&#xff0c;Apache Doris 2.1.4 版本已于 2024 年 6 月 26 日正式发布。在 2.1.4 版本中&#xff0c;我们对数据湖分析场景进行了多项功能体验优化&#xff0c;重点修复了旧版本中异常内存占用的问题&#xff0c;同时提交了若干改进项以及问题修复&#xff…

HBase的概念、运行原理及分析

HBase 是一个分布式的、面向列的开源数据库&#xff0c;由 Apache 软件基金会维护&#xff0c;基于 Google 的 Bigtable 论文设计。它运行在 Hadoop 文件系统&#xff08;HDFS&#xff09;之上&#xff0c;并且能够处理大规模结构化数据的存储和访问。主要特点包括&#xff1a;…

linux桌面运维----第三天

1、Linux登录信息命令&#xff1a; whoami命令&#xff08;记住&#xff09; 作用&#xff1a;查看当前活动用户 ​语法&#xff1a;whoami 选项 ​选项&#xff1a; --help  在线帮助。--vesion  显示版本信息 2、获取命令帮助手册&#xff1a; man 命令名命令名 …

自动驾驶仿真Carla入门

Carla自动驾驶仿真平台学习指南 一、入门阶段 了解Carla基本概念 Carla&#xff1a;一个用于自动驾驶研究的开源仿真平台&#xff0c;提供高度可定制化的城市环境和车辆模型。支持Python和C API&#xff0c;用于控制仿真场景、车辆行为和传感器模拟。安装Carla 访问Carla官方…

C实现linux下自己的shell

strcmp函数 char *strsep(char **stringp, const char *delim); strsep 是 C 标准库字符串实用程序的一部分&#xff0c;定义在 <string.h> 头文件中。它可以用来从字符串对象中提取被给定定界符包围的标记。 strsep 需要两个参数-指向 char*的指针和指向 char 的指针。…

BaseModel的数据类型

在Pydantic的BaseModel中&#xff0c;可以使用Python的基本数据类型以及一些特殊的类型&#xff0c;包括但不限于以下几种&#xff1a; 1、基本数据类型: int: 整数 float: 浮点数 str: 字符串 bool: 布尔值 (True 或 False) bytes: 字节串 None: 用于表示可选字段的缺失…

玩转AI之四个免费热门的AI工具

2023年&#xff0c;可以说称之为人工智能元年&#xff0c;随着 AI 人工智能、机器学习技术的不断发展&#xff0c;各种 AI 算法的应用也越来越广泛&#xff0c;在AI这一领域中&#xff0c;软件、工具和网站如雨后春笋般涌现。下半年&#xff0c;预计会有更多王炸级别的产品问世…

打破数据分析壁垒:SPSS复习必备(十)

Means过程 统计学上的定义和计算公式 定义&#xff1a;Means过程是SPSS计算各种基本描述统计量的过程&#xff0c;其实就是按照用户指定条件&#xff0c;对样本进行分组计算均数和标准差&#xff0c;如按性别计算各组的均数和标准差。 用户可以指定一个或多个变量作为分组变…

java基于ssm+jsp 社区生活超市管理系统

1前台首页功能模块 社区生活超市管理系统 &#xff0c;在社区生活超市管理系统可以查看首页、商品信息、我的、跳转到后台等内容&#xff0c;如图1所示。 图1系统首页界面图 用户登录、用户注册&#xff0c;通过注册填写用户账号、密码、用户姓名、性别、用户手机、送货地址等…

观测云 VS 开源自建

观测云是一款面向全技术栈的监控观测一体化产品方案&#xff0c;具备强大而丰富的功能&#xff0c;目标是帮助最终用户提升监控观测的能力&#xff0c;化繁为简&#xff0c;轻松的构建起完整的监控观测体系。同时能够帮助整个企业的开发技术团队从统一的观测能力上获得完整的收…