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

news2024/11/19 5:26:26

自学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.coloradmin.cn/o/1867372.html

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

相关文章

Pinia的基本用法

Pinia的安装和引入 1.安装Pinia npm install pinia2. 在vue项目的main.js文件中引入pinia import { createApp } from vue import { createPinia } from pinia import App from ./App.vueconst pinia createPinia() const app createApp(App)app.use(pinia) app.mount(#ap…

LabVIEW电梯钢丝绳实时监测系统

电梯作为现代高层建筑中不可或缺的交通工具&#xff0c;其安全性直接影响到乘客的生命财产安全。电梯钢丝绳作为承载乘客与货物的关键部件&#xff0c;其健康状况尤为重要。传统的钢丝绳检测方法大多依赖于定期检查&#xff0c;无法实现实时监控&#xff0c;存在一定的安全隐患…

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

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

【unity笔记】七、Mirror插件使用

一、简介 Mirror 是一个用于 Unity 的开源多人游戏网络框架&#xff0c;它提供了一套简单高效的网络同步机制&#xff0c;特别适用于中小型多人游戏的开发。以下是 Mirror 插件的一些关键特点和组件介绍&#xff1a; 简单高效&#xff1a;Mirror 以其简洁的 API 和高效的网络…

前端:Nuxt2 + Vuetify2

想要开发一个网站&#xff0c;并且支持SEO搜索&#xff0c;当然离不开我们的 Nuxt &#xff0c;那通过本篇文章让我们一起了解一下。如果构建一个Nuxt项目 安装 Nuxt&#xff0c;创建项目 安装nuxt2&#xff0c; 需要node v16&#xff0c;大家记得查看自己的node版本。构建脚…

安全技术和防火墙(iptables)

安全技术 入侵检测系统&#xff1a;特点是不阻断网络访问&#xff0c;主要是提供报警和事后监督&#xff0c;不主动介入&#xff0c;类似于监控。 入侵防御系统&#xff1a;透明模式工作&#xff0c;对数据包&#xff0c;网络监控&#xff0c;服务攻击&#xff0c;木马&#…

实时显示用户输入PySide6实例

如何用 PySide6 实现QLabel 实时显示用户在 QLineEdit 内输入的内容&#xff1f; 示例代码&#xff1a; # QLineEdit 用户输入内容&#xff0c;QLabel 即时显示用户输入训练from PySide6.QtWidgets import (QApplication, QWidget,QLabel, QLineEdit, QVBoxLayout)class MyWi…

Python | Leetcode Python题解之第200题岛屿数量

题目&#xff1a; 题解&#xff1a; class Solution:def dfs(self, grid, r, c):grid[r][c] 0nr, nc len(grid), len(grid[0])for x, y in [(r - 1, c), (r 1, c), (r, c - 1), (r, c 1)]:if 0 < x < nr and 0 < y < nc and grid[x][y] "1":self.d…

喂饭级AI神器!免代码一键绘制图表,文本数据秒变惊艳视觉盛宴!

由于目前的AI生成图表工具存在以下几个方面的问题&#xff1a; 大多AI图表平台是纯英文&#xff0c;对国内用户来说不够友好&#xff1b;部分平台在生成图表前仍需选择图表类型、配置项&#xff0c;操作繁琐&#xff1b;他们仍需一份规整的数据表格&#xff0c;需要人为对数据…

Qt Quick Effect Maker 工具使用介绍

一、介绍 随着 Qt 版本的不断升级,越来越多的功能被加入 Qt,一些新的工具也随之应运而生,Qt Quick Effect Maker 工具是 Qt 6.5 之后才新添加的工具,之前的名字应该是叫做 Qt shader tool 这个模块。 以下是官方的释义:Qt Quick Effect Maker是一个用于为Qt Quick创建自定…

3.PyQt6常用基本控件

目录 常用控件 1.文本类控件 1.QLable标签控件 1.设置标签文本 2.设置标签文本和对齐方式 3.换行显示 4.添加超链接 5.为标签设置图片 6.获取标签文本 2.QLineEdit单行文本控件 3.QTextEdit多行富文本控件 4.QPlainTextEdit纯文本控件 5.QSpinBox整数数字选择控件 …

C++ | Leetcode C++题解之第200题岛屿数量

题目&#xff1a; 题解&#xff1a; class Solution { private:void dfs(vector<vector<char>>& grid, int r, int c) {int nr grid.size();int nc grid[0].size();grid[r][c] 0;if (r - 1 > 0 && grid[r-1][c] 1) dfs(grid, r - 1, c);if (r …

小白上手AIGC-基于PAI-DSW部署Stable Diffusion文生图Lora模型

小白上手AIGC-基于PAI-DSW部署Stable Diffusion文生图Lora模型 前言资源准备开启体验服务创建工作空间 部署服务创建DSW实例安装Diffusers启动WebUI 写在最后 前言 在上一篇博文小白上手AIGC-基于FC部署stable-diffusion 中&#xff0c;说到基于函数计算应用模板部署AIGC文生图…

Java之线程相关应用实现

后台线程 一个进程中只有后台进程运行&#xff0c;该进程将会结束。 新创建的线程默认为前台线程&#xff0c;Java中只要有一个前台线程运行&#xff0c;就不会结束程序&#xff0c;如果只有后台线程运行&#xff0c;程序就会结束&#xff0c;可以在线程对象启动前执行setDae…

工业AIoT竞赛流程

不要点到重置&#xff01;&#xff01;&#xff01;要刷新虚拟机就点重启 xshell连接虚拟机&#xff1a;ssh rootPublic IP 环境构建 vim /etc/hosts 按 i 进入插入模式&#xff0c;加内网ip和主机名&#xff0c;按esc&#xff0c;按 : &#xff0c;按wq 三个虚拟机都这样配 …

HQChart使用教程30-K线图如何对接第3方数据41-分钟K线叠加股票增量更新

HQChart使用教程30-K线图如何对接第3方数据40-日K叠加股票增量更新 叠加股票叠加分钟K线更新Request 字段说明Data.symbol 协议截图返回json数据结构overlaydata HQChart代码地址交流 叠加股票 示例地址:https://jones2000.github.io/HQChart/webhqchart.demo/samples/kline_i…

controller不同的后端路径对应vue前端传递数据发送请求的方式

目录 案例一&#xff1a; 为什么使用post发送请求&#xff0c;参数依旧会被拼接带url上呢&#xff1f;这应该就是param 与data传参的区别。即param传参数参数会被拼接到url后&#xff0c;data会以请求体传递 补充&#xff1a;后端controller 参数上如果没写任何注解&#xff0c…

半夜被慢查询告警吵醒,limit深度分页的坑

分享是最有效的学习方式。 博客&#xff1a;https://blog.ktdaddy.com/ 故事 梅雨季&#xff0c;闷热的夜&#xff0c;令人窒息&#xff0c;窗外一道道闪电划破漆黑的夜幕&#xff0c;小猫塞着耳机听着恐怖小说&#xff0c;辗转反侧&#xff0c;终于睡意来了&#xff0c;然而挨…

50、基于NARX神经网络的磁悬浮建模(matlab)

1、NARX神经网络简介 NARX&#xff08;非线性自回归外部输入&#xff09;神经网络是一种用于非线性建模和预测的神经网络结构。与传统的自回归模型不同&#xff0c;NARX网络可以接收外部输入来影响输出结果&#xff0c;从而更好地捕捉系统的复杂性和非线性特征。 NARX神经网络…

正版软件 | DeskScapes:将您的桌面变成生动的画布

您是否厌倦了静态的桌面背景&#xff1f;Stardock 的 DeskScapes 软件赋予您将任何图片或视频动画化的能力&#xff0c;让您的 Windows 桌面焕发活力。 动画桌面&#xff0c;艺术生活 使用 DeskScapes 您可以将任何静态图片或视频转化为桌面背景。不仅如此&#xff0c;通过 60 …