python的print与sys.stdout

print与sys.stdout

在python中,print语句实现打印,从技术角度来说,这是把一个或多个对象转换为其文本表达式形式,然后发送给标准输出流或者类似的文件流,更详细的说,打印与文件和流的概念紧密相连。

我们都知道在python中,向一个文件写东西是通过类似file.write(str)方法实现的,而你可能没想到print语句执行的操作其实也是一个写操作,不过他把我们从外设输入的数据写到了stdout流,并进行了一些特定的格式化。当然,和文件方法不通,在执行打印操作是,不需要将对象转换为字符串(print已经帮我们做好了)。

print 123

等价于

import sys
sys.stdout.write(str(123)+'\n')

这里的sys.stdout也就是我们python中标准输出流,这个标准输出流默认是映射到打开脚本的窗口的,所以,我们的print操作会把字符打印到屏幕上。既然sys.stdout默认是映射到打开脚本的窗口,那么这个映射关系是否可以修改呢?

答案是肯定的,这也是python中常用的一个小技巧,我们可以通过修改这种映射关系来把我们的打印操作重定向到其它地方,例如特定的文件。方法就是给sys.stdout赋值,修改它的指向。看下面的例子:

import sys
sys.stdout = open('test.txt','w')
print 'Hello world'

可以看到,我们让sys.stdout指向了一个文件对象。然后,再执行打印操作,这时,hello world输出在了一个文件test.txt中:
这里写图片描述
但是,上面的代码有一个问题,我们把打印重定向到了一个文件中,那么在程序后面每一处调用print操作的输出都在这个文件中,那么我们后面想要打印字符到屏幕怎么办?

所以,这就需要我们先保存原始的sys.stdout,后面想要恢复的时候再赋值就行了,实现如下:

import sys
temp = sys.stdout
sys.stdout = open('test.txt','w')
print 'hello world'
sys.stdout = temp #恢复默认映射关系
print 'nice'

sys.stdout除了可以映射到一个文件外,还有什么可以做的吗?当然有的,你甚至可以将sys.stdout赋值为一个自定义的对象,前提是这个对象实现了write方法。毕竟print调用的就是sys.stdout.write()方法。你可以自定义write方法,实现一些复杂的操作。

class Test:
	def write(self,string):
		#do something you wanna do

test = Test()
temp = sys.stdout
sys.stdout = test
print 'hello world'

前面我们是通过给手动给sys.stdout赋值改变print的输出位置,实际上print操作还有更简单的实现重定向的方式,再python2.7下,我们可以通过下面这种形式:

log = open('log.txt','a')
print >> log,'hello world' #重定向到文件log.txt中
print 'hello world' #输出到默认位置

这样一来就方便多了,当然类似的方法也可以应用到sys.stdin上,raw_input()就是调用了sys.stdin.read()方法,所以通过本文的阐述,我想大家应该清楚可以怎么做了。

![这里写图片描述](https://img-blog.csdn.net/20180613104153419?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlX2FuZA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 关注我,了解更多精彩内容
  • 25
    点赞
  • 0
    评论
  • 55
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
<p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; color: #333333;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box;"><strong style="margin: 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #ff0000;"><span style="margin: 0px; padding: 0px; font-size: 24px;"><strong style="margin: 0px; padding: 0px; color: #333333;">敬告:</strong></span></span></strong><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: #ff0000; font-size: 24px;">该系列的课程在抓紧录制更新中,敬请大家关注。</span></strong></span></span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box;"><strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #ff0000;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box;"><strong style="margin: 0px; padding: 0px; color: #333333;"><strong style="margin: 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #ff0000; font-size: 24px;"><strong style="margin: 0px; padding: 0px; color: #333333;">敬告:</strong></span></strong></strong><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: #00b050;">本课程项目仅供学习参考,请不要直接商用,概不负责任何法律责任</span><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: #ff0000;">。</span></strong></span></span></strong></span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #333333;"> </span><span style="margin: 0px; padding: 0px; color: #333333; max-width: 100%; box-sizing: border-box;"><strong style="margin: 0px; padding: 0px;">该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。</strong></span><br style="margin: 0px; padding: 0px;" /></span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"> </p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; color: #e36c09; font-size: 20px;"><strong style="margin: 0px; padding: 0px;">我将带领大家一起来学习使用FFmpeg开发视频监控项目,<span style="margin: 0px; padding: 0px; color: #00b050;">并动手操练</span>。</strong></span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-size: 20px; color: #000000;"><strong style="margin: 0px; padding: 0px;">具体内容包括:</strong></span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"> </p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-size: 20px; color: #7030a0;">一、视频监控的架构和流程</span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-size: 20px; color: #7030a0;">二、FFmpeg4.3+SDL2+Qt5开发环境的搭建</span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-size: 20px; color: #7030a0;">三、FFmpeg的SDK编程回顾总结并操练</span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-size: 20px; color: #7030a0;">四、SDL2.0的编程回顾总结并操练</span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-size: 20px; color: #7030a0;">五、颜色空间转换RGB和YUV的原理与实战</span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-size: 20px; color: #7030a0;">六、Qt5+FFmpeg本地摄像头采集预览实战</span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-size: 20px; color: #7030a0;">七、代码封装:摄像头h264/5编码并存储</span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-size: 20px; color: #7030a0;">八、Qt5+FFmpeg单路网络摄像头采集预览</span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-size: 20px; color: #7030a0;">九、Qt5+FFmpeg单路网络摄像头</span><span style="margin: 0px; padding: 0px; font-size: 20px; color: #ff0000;">采集预览录制会看</span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-size: 20px; color: #7030a0;">十、onvif与GB/T-28181的简介</span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"> </p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><img src="https://img-bss.csdnimg.cn/202101130753276832.jpg" alt="" /></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="color: #313d54; font-family: Helvetica Neue, Helvetica, Hiragino Sans GB, Arial, sans-serif;"> </span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><strong><span style="color: #313d54; font-family: Helvetica Neue, Helvetica, Hiragino Sans GB, Arial, sans-serif;">音视频与流媒体是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学 基础理论,而是直接做项目,往往会看到c/c++的代码时一头雾水,不知道代码到底是什么意思,这是为什么呢?</span></strong></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="color: #313d54; font-family: Helvetica Neue, Helvetica, Hiragino Sans GB, Arial, sans-serif;"> </span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="color: #313d54; font-family: Helvetica Neue, Helvetica, Hiragino Sans GB, Arial, sans-serif;"> </span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="color: #313d54; font-family: Helvetica Neue, Helvetica, Hiragino Sans GB, Arial, sans-serif;"> </span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="color: #313d54; font-family: Helvetica Neue, Helvetica, Hiragino Sans GB, Arial, sans-serif;">因为没有学习音视频和流媒体的基础理论,就比如学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂。</span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="color: #313d54; font-family: Helvetica Neue, Helvetica, Hiragino Sans GB, Arial, sans-serif;"> </span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="color: #313d54; font-family: Helvetica Neue, Helvetica, Hiragino Sans GB, Arial, sans-serif;">所以呢,一定要认真学习基础理论,然后再学习播放器、转码器、非编、流媒体直播、视频监控、等等。</span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="color: #313d54; font-family: Helvetica Neue, Helvetica, Hiragino Sans GB, Arial, sans-serif;"> </span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="color: #313d54; font-family: Helvetica Neue, Helvetica, Hiragino Sans GB, Arial, sans-serif;"> </span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="color: #313d54; font-family: Helvetica Neue, Helvetica, Hiragino Sans GB, Arial, sans-serif;"> </span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><strong><span style="color: #313d54; font-family: Helvetica Neue, Helvetica, Hiragino Sans GB, Arial, sans-serif;">梅老师从事音视频与流媒体行业18年;曾在永新视博、中科大洋、百度、美国Harris广播事业部等公司就职,经验丰富;曾亲手主导广电直播全套项目,精通h.264/h.265/aac,曾亲自参与百度app上的网页播放器等实战产品。</span></strong></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"> </p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="color: #313d54; font-family: Helvetica Neue, Helvetica, Hiragino Sans GB, Arial, sans-serif;"> </span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="color: #313d54; font-family: Helvetica Neue, Helvetica, Hiragino Sans GB, Arial, sans-serif;">目前全身心自主创业,主要聚焦音视频+流媒体行业,精通音视频加密、流媒体在线转码快编等热门产品。</span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="color: #313d54; font-family: Helvetica Neue, Helvetica, Hiragino Sans GB, Arial, sans-serif;"> </span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"> </p>
<p>我将带领大家一起来学习最新版FFmpeg4.3。</p> <p>1、您将学会<strong>FFmpeg4.3的环境搭建</strong>。</p> <p>2、您将<strong><span style="color: #e03e2d;">领略FFmpeg处理音视频的强大威力</span>。</strong></p> <p>3、您将<span style="color: #2dc26b;"><strong>体验FFmpeg音视频特效的处理效果</strong></span>。</p> <p>4、您将<strong><span style="color: #ba372a;">亲手搭建Nginx+FFmpeg的直播网站</span>。</strong></p> <p>5、您将<strong><span style="color: #b96ad9;">玩转VLC</span></strong>。</p> <p>6、您将<strong><span style="color: #ba372a;">感受FFmpeg处理流媒体的功效。</span></strong></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; font-size: 16px; background-color: #ffffff; max-width: 100%; box-sizing: border-box; color: #333333;">-----------------------------------------</p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-size: 24px;"><strong style="margin: 0px; padding: 0px;">视频中的地址已经无法打开,我将ffmepg4.3.1的开发包和源码上传到了百度云:</strong></span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;">链接:https://pan.baidu.com/s/1-3xSO6ytyQLlSId0Xiak4w </p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;">提取码:fyxy</p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; color: #ff0000;"><strong style="margin: 0px; padding: 0px;">------------------------------------------</strong></span></p>
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值