python标准输入stdout_python 标准输出 sys.stdout 重定向
环境:python2.7
1.sys.stdout 和 print 关系
调用 python 打印对象 print obj的时候,事实上其实是都用了 sys.stdout.write(obj+’\n’),也就是说 print 调用了 sys.stdout 的 write 方法.
sys.stdout.write('hello'+'\n')
print 'hello'
上面这两行是等价的.
2.sys.stdin 和 raw_input
使用 raw.input(‘Input promption:’)的时候实际上是先把提示信息输出,然后捕获输入信息.
hi = raw_input('hello?')
print 'hello?',
hi = sys.stdin.readline()[:-1]
上面这两种方法是等价的.
3.从控制台到文件
sys.stdout 是指向控制台的,如果把文件对象的引用赋给 sys.stdout,那么 print 调用的就是文件对象的 write 方法
f_handler = open('out.log','w')
sys.stdout = f_handler
print 'hello'
上面这样执行完不会输出到控制台而是写入文件中,如果想恢复,就在重新指定文件对象之前把原始的控制台对象保留下来,向文件中写完之后再把控制台对象找回来,如下
__console__=sys.stdout
f_handler=open('out.log', 'w')
sys.stdout=f_handler
print 'hello'
sys.stdout=__console__
4.同事重定向到控制台和文件
import sys
class __redirection__:
def __init__(self):
self.buff=''
self.__console__=sys.stdout
def write(self, output_stream):
self.buff+=output_stream
def to_console(self):
sys.stdout=self.__console__
print self.buff
def to_file(self, file_path):
f=open(file_path,'w')
sys.stdout=f
print self.buff
f.close()
def flush(self):
self.buff=''
def reset(self):
sys.stdout=self.__console__
if __name__=="__main__":
# redirection
r_obj=__redirection__()
sys.stdout=r_obj
# get output stream
print 'hello'
print 'there'
# redirect to console
r_obj.to_console()
# redirect to file
r_obj.to_file('out.log')
# flush buffer
r_obj.flush()
# reset
r_obj.reset()
同样的,sys.stderr, sys.stdin 也都可以被重定向到多个地址,但是我感觉用日志模块来搞是不是更方便?总之要了解这种方法,,避免以后看到了不懂!
from:http://www.cnblogs.com/turtle-fly/p/3280519.html
python标准输入stdout_python 标准输出 sys.stdout 重定向相关推荐
- python stdout_python 之sys.stdout小记
标准输出(sys.stdout)-->print(打印) 标准输入(sys.stdin)-->input(接收输入) 标准错误输出和标准输出类似也是print(打印). python最基本 ...
- 什么是标准输入,标准输出(stdin,stdout)
什么是标准输入,标准输出(stdin,stdout)? 要弄清什么是标准输入输出.首先需要弄懂什么是IO. IO的I是Input的意思,O是output的意思.意味着输入和输出. 更确切的含义是 I: ...
- 一文搞懂Linux下的文件的标准输入、标准输出、输出重定向问题
Linux下一切皆文件,所谓的终端那个黑框也可以视为一个文件,在Linux驱动开发中各个设备也可以被认为是文件操作,所以文件的操作很重要.我们通常将键盘叫做标准输入设备.将显示器叫做标准输出设备,下面 ...
- 浔阳江头夜送客,枫叶荻花秋瑟瑟——python标准输入、标准输出和注释
浔阳江头夜送客,枫叶荻花秋瑟瑟. 主人下马客在船,举酒欲饮无管弦. 醉不成欢惨将别,别时茫茫江浸月. 忽闻水上琵琶声,主人忘归客不发. 寻声暗问弹者谁,琵琶声停欲语迟. 移船相近邀相见,添酒回灯重开宴 ...
- pythonsys标准_python 以标准输出(sys.stdout)为例,看python的标准输入、标准错误输出...
标准输出(sys.stdout)对应的操作就是print(打印)了,标准输入(sys.stdin)则对应input(接收输入)操作,标准错误输出和标准输出类似也是print(打印). python最基 ...
- python标准输入输出用来干什么_python 以标准输出(sys.stdout)为例,看python的标准输入、标准错误输出...
标准输出(sys.stdout)对应的操作就是print(打印)了,标准输入(sys.stdin)则对应input(接收输入)操作,标准错误输出和标准输出类似也是print(打印). python最基 ...
- python stdout_python--几种标准输出(stdout)重定向方式
系统:windows为主 python 版本:2.7 1. 背景 在Python中,文件对象sys.stdin.sys.stdout和sys.stderr分别对应解释器的标准输入.标准输出和标准出错流 ...
- python 中的 sys.stdin ,sys.stdout 和sys.stderr
文档解释: File objects used by the interpreter for standard input, output and errors: stdin is used for ...
- Python 标准库之 sys 模块详解
Python sys 模块详解 1. 简介 "sys"即"system","系统"之意.该模块提供了一些接口,用于访问 Python 解释器 ...
最新文章
- python自动点赞_用Python模拟技巧带你实现自动抽屉登录自动点赞
- GitHub Universe 2021|MS Reactor 邀你共聚年度盛会
- 工具包:Safetype Config使用
- scrapy-redis爬虫如何发送POST请求
- 发现VB6中SAX的乐趣[转]
- 升级到ASP.NET2.0之后的疑问
- 阿里云,并不是比谁聪明,而是更早面临那些疼痛
- 我的web2.0作品:畅想网络应用系统(采用JavaScript、Jquery、Ajax 等制作,完成时间10天)...
- android日志统计管理,时间日志app下载-时间日志(时间统计管理)下载v1.1.1 安卓版-西西软件下载...
- 解决主页被劫持的dos脚本
- python 登录新浪微博_模拟登录新浪微博(Python) - 转
- Redis从入门到精通(二)
- dct变换的主要优点有哪些_【WIX维克斯】MT、AT、AMT、CVT、DCT都有哪些是骗人的?...
- SQL经典案例(学生表,课程表,选课表,教师表) 练习
- 《疯狂Java讲义(第4版)》-----第4章【控制台五子棋】
- 第一冲刺阶段——站立会议第六天4月23日
- AppleScript学习笔记(一)初识AppleScript
- 【深度学习】NIN (Network in Network) 网络
- X线DR医学图像 --- DR医用滤线栅及摩尔纹详解 (三) 摩尔纹的仿真
- 项目二:实现简单的金山打字通
热门文章
- 仿猎豹垃圾清理(实现原理+源码)
- 食在广州 | 爬取分析广州6万+餐饮门店数据
- Linux系统新增SWAP分区
- Java集合类之List的ArrayList之增删改查
- 弘辽科技:2020全民参与直播电商模式,新时代的营销战场
- 软件测试——fiddler工具(1)
- 猿创征文|国产数据库之OceanBase的SQL详解
- Java基础(28)数据输入输出流、内存操作流、打印流、随机访问流、序列化与反序列化流、Properties类(集合)
- ssh研究生毕业环节管理系统 ssh框架 MVC模式MYSQL
- android录音函数,Android - 实现录音变声播放