python3 sys.stdout.write print 区别
当我们使用print(obj)在console上打印对象的时候,实质上调用的是sys.stdout.write(obj+'\n'),print在打印时会自动加个换行符,以下两行等价:
sys.stdout.write('hello'+'\n')
print('hello')
从控制台重定向到文件
原始的 sys.stdout 指向控制台,如果把文件的对象的引用赋给 sys.stdout,那么 print 调用的就是文件对象的 write 方法,将对象写入文件中:
f_handler=open('out.log', 'w')
sys.stdout=f_handler
print('hello')
如果你还想在控制台打印一些东西的话,最好先将原始的控制台对象引用保存下来,向文件中打印之后再恢复 sys.stdout
__console__=sys.stdout# redirection start
# ...
# redirection endsys.stdout=__console__
同时重定向到控制台和文件
如果我们希望打印的内容一方面输出到控制台,另一方面输出到文件作为日志保存,那么该怎么办?将打印的内容保留在内存中,而不是一打印就将 buffer 释放刷新,我们可以通过自定义一个类来实现这个功能:
import os,sysclass redirection():def __init__(self):self.buf = ''self.__console__ = sys.stdoutself.path = 'C:\\Users\\***\\Desktop' # 存放日志的路径def write(self, output_stream):self.buf += output_streamdef to_log(self, filename):file = open(self.path + '\\' + filename, 'a')sys.stdout = fileprint(self.buf)file.closedef to_console(self):sys.stdout = self.__console__print(self.buf)def flush(self):self.buf = ''def main():obj = redirection()input_stream = input("输入:")while input_stream: # 实现循环输入obj.write(input_stream + '\n')input_stream = input("输入:")obj.to_log('log.txt') # 日志名称为log.txtobj.to_console()obj.flush()if __name__ == "__main__":main()
运行结果:
=================== RESTART: C:/Users/***/Desktop/tets.py ===================
输入:abcd
输入:12345
输入:hello
输入:
abcd
12345
hello
此时打开log.txt文件,会发现输出到console的三行文字也已经被写入。
python3 sys.stdout.write print 区别相关推荐
- python sys stdout_关于sys.stdout和print的区别详解
一.sys.stdout的形式就是print的一种默认输出格式,等于print "%VALUE%" print函数是对sys.stdout的高级封装,看下print函数的解释 Pr ...
- python stdout用法_python学习之 sys.stdout和print
转自:http://blog.csdn.net/wuxiushu/article/details/52358172 sys.stdout 与print 当我们在 Python 中打印对象调用print ...
- python3 sys.stdout.write 实时打印刷新
话不多说先上一段代码 import time from datetime import datetime as dtfor i in range(5):print(dt.now())time.slee ...
- python3 sys.stdin.readline input 区别
sys.stdin.readline( )会将标准输入全部获取,包括末尾的'\n', input()会把'\n'忽略 import sys a=sys.stdin.readline() b=input ...
- python中sys.stdout、sys.stdin
如果需要更好的控制输出,而print不能满足需求,sys.stdout,sys.stdin,sys.stderr就是你需要的. 1. sys.stdout与print: 在python中调用print ...
- python标准输入输出用来干什么_python 以标准输出(sys.stdout)为例,看python的标准输入、标准错误输出...
标准输出(sys.stdout)对应的操作就是print(打印)了,标准输入(sys.stdin)则对应input(接收输入)操作,标准错误输出和标准输出类似也是print(打印). python最基 ...
- Python的sys.stdout、sys.stdin重定向
Python的sys.stdout.sys.stdin重定向 转自:http://www.cnblogs.com/turtle-fly/p/3280519.html 本文环境:Python 2.7 使 ...
- pythonsys标准_python 以标准输出(sys.stdout)为例,看python的标准输入、标准错误输出...
标准输出(sys.stdout)对应的操作就是print(打印)了,标准输入(sys.stdin)则对应input(接收输入)操作,标准错误输出和标准输出类似也是print(打印). python最基 ...
- python stdout_python 之sys.stdout小记
标准输出(sys.stdout)-->print(打印) 标准输入(sys.stdin)-->input(接收输入) 标准错误输出和标准输出类似也是print(打印). python最基本 ...
最新文章
- 这个 GitHub Trending 让我在腾讯会议中“换脸成”任何人!来唠唠如何上手
- 广域网协议:PPP协议和HDLC协议—Vecloud微云
- (57)模拟线程切换
- IntelliJ IDEA编码设置
- 炫界 (978) -(建工发现应用克隆漏)_除了DMA,这些漏损点检测与漏损区域识别技术你知道么?...
- 1-1:网络初识之了解什么是协议以及TCP/IP协议
- OpenShift 4 - 在离线环境中用 oc-mirror 获取 OpenShift 和 Opeartor 的相关镜像
- 中国大学MOOC“Python程序设计基础”第6次开课时间
- 小程序加载图片失败,默认图片的替换方法
- c语言判断素数(质数)
- 转载 三极管饱和及深度饱和状态的理解和判断!!
- 华为16道经典面试题
- python复数类型的虚部通过什么表示_Python小白必备知识:Python复数类型(complex)详解...
- python 处理 图像和视频
- 软著注销流程 软件著作权撤销 操作流程
- VUE解决路由里的参数改变页面却没有跳转的问题
- prometheus监控+告警
- 深信服2018春季招聘-研发卷编程题 - 题解
- HDU - 6070 Dirt Ratio (二分 + 线段树)
- usgs dem 导入matlab 程序,用GDAL打开从USGS下载的img影像文件