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,一经查实,立即删除!

相关文章

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

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

华为---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…

玩转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;轻松的构建起完整的监控观测体系。同时能够帮助整个企业的开发技术团队从统一的观测能力上获得完整的收…

ACL 2023事件相关(事件抽取、事件关系抽取、事件预测等)论文汇总

ACL 2023事件抽取相关(事件抽取、事件关系抽取、事件预测等)论文汇总&#xff0c;后续会更新全部的论文讲解。 Event Extraction Code4Struct: Code Generation for Few-Shot Event Structure Prediction 数据集&#xff1a;ACE 2005 动机&#xff1a;与自然语言相比&#xf…

文件上传漏洞---Pyload

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 本文重点从靶场案例分析文件上传漏洞常见的Pylod&#xff0c;本文演示靶场upload-labs 一.文件类型---Pyload 不同的文件对应不同的文件类型&#xff0c;后端代码通过限制特定的文件类型…

fastadmin框架修改前端时间戳格式的时区

一、上传文件 将 moment-timezone-with-data.js 和 moment-timezone-with-data.min.js 文件上传到项目的 \public\assets\libs\moment\ 文件夹中。 二、配置中引入文件 在 \public\assets\js\require-backend.js 文件中增加所引入文件的配置: moment-timezone-with-data: …

JS(JavaScript)入门指南(DOM、事件处理、BOM、数据校验)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。 玉阶生白露,夜久侵罗袜。 却下水晶帘,玲珑望秋月。 ——《玉阶怨》 文章目录 一、DOM操作1. D…

SpringCloud Alibaba Sentinel中@SentinelResource使用实践总结

Sentinel 提供了 SentinelResource 注解用于定义资源&#xff0c;并提供了 AspectJ 的扩展用于自动定义资源、处理 BlockException 等。 注意&#xff1a;注解方式埋点不支持 private 方法。 官网地址&#xff1a;注解埋点支持 【1】资源名称限流 ① controller方法 GetMapp…

LabVIEW技术交流-布尔灯仿真数码管

问题来源 闲来无事&#xff0c;逛论坛问答&#xff0c;看到这样一个问题&#xff0c;觉得有意思&#xff0c;就自己尝试下。 这个功能其实是不难的&#xff0c;就是显示不同的数值时&#xff0c;对相应的布尔灯进行真假值操作就行了。但是我又想到了更有趣的玩法&#xff0c;能…

C#学习系列之DataGrid无故添加空行

C#学习系列之DataGrid无故添加空行 前言解决前解决后总结 前言 采用别人的轮子&#xff0c;想在基础上改界面&#xff0c;但是copy后&#xff0c;无论怎么样都会有空行&#xff0c;实在是绑定数据的输入没有任何赋值。 解决前 绑定的数据中输入三组数据&#xff0c;但是没有第…

【Academy】测试WebSockets安全漏洞Testing for WebSockets security vulnerabilities

测试WebSockets安全漏洞Testing for WebSockets security vulnerabilities 概述WebSockets是什么?HTTP和WebSockets有什么区别&#xff1f;如何建立WebSocket连接&#xff1f;WebSocket消息看起来像什么&#xff1f; 操纵WebSocket流量拦截和修改WebSocket消息重放和生成新的W…

链式队列算法库构建

学习贺利坚老师课程,构建链式队列算法库 数据结构之自建算法库——链队&#xff08;链式队列&#xff09;_数据结构函数链队列的算法框架有哪些-CSDN博客文章浏览阅读6.2k次&#xff0c;点赞3次&#xff0c;收藏9次。本文针对数据结构基础系列网络课程(3)&#xff1a;栈和队列…

低碳短视频:成都柏煜文化传媒有限公司

低碳短视频&#xff1a;绿色传播的新风尚 随着全球气候变化和环境问题日益严峻&#xff0c;低碳生活已经成为人们追求的新风尚。在这个背景下&#xff0c;低碳短视频应运而生&#xff0c;以其独特的方式传播绿色理念&#xff0c;推动低碳生活方式的普及。成都柏煜文化传媒有限…

printf趣味代码,打印图案

文章目录 1.打印佛祖2.打印猫猫 (闪烁效果) 1.打印佛祖 #include <stdio.h>void budda_bless(){printf("///\n\ // _ooOoo_ //\n\ // o8888888o //\n\ // …

文件I/O基础-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

文件I/O基础 本章将介绍Linux应用编程中最基础的知识&#xff0c;即文件I/O&#xff08;Input/Output&#xff09;。文件I/O指的是对文件进行读写操作&#xff0c;在Linux系统中一切皆文件&#xff0c;这是Linux系统设计的核心理念&#xff0c;因此文件I/O操作既是基础又是最重…