环境: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 重定向相关推荐

  1. python stdout_python 之sys.stdout小记

    标准输出(sys.stdout)-->print(打印) 标准输入(sys.stdin)-->input(接收输入) 标准错误输出和标准输出类似也是print(打印). python最基本 ...

  2. 什么是标准输入,标准输出(stdin,stdout)

    什么是标准输入,标准输出(stdin,stdout)? 要弄清什么是标准输入输出.首先需要弄懂什么是IO. IO的I是Input的意思,O是output的意思.意味着输入和输出. 更确切的含义是 I: ...

  3. 一文搞懂Linux下的文件的标准输入、标准输出、输出重定向问题

    Linux下一切皆文件,所谓的终端那个黑框也可以视为一个文件,在Linux驱动开发中各个设备也可以被认为是文件操作,所以文件的操作很重要.我们通常将键盘叫做标准输入设备.将显示器叫做标准输出设备,下面 ...

  4. 浔阳江头夜送客,枫叶荻花秋瑟瑟——python标准输入、标准输出和注释

    浔阳江头夜送客,枫叶荻花秋瑟瑟. 主人下马客在船,举酒欲饮无管弦. 醉不成欢惨将别,别时茫茫江浸月. 忽闻水上琵琶声,主人忘归客不发. 寻声暗问弹者谁,琵琶声停欲语迟. 移船相近邀相见,添酒回灯重开宴 ...

  5. pythonsys标准_python 以标准输出(sys.stdout)为例,看python的标准输入、标准错误输出...

    标准输出(sys.stdout)对应的操作就是print(打印)了,标准输入(sys.stdin)则对应input(接收输入)操作,标准错误输出和标准输出类似也是print(打印). python最基 ...

  6. python标准输入输出用来干什么_python 以标准输出(sys.stdout)为例,看python的标准输入、标准错误输出...

    标准输出(sys.stdout)对应的操作就是print(打印)了,标准输入(sys.stdin)则对应input(接收输入)操作,标准错误输出和标准输出类似也是print(打印). python最基 ...

  7. python stdout_python--几种标准输出(stdout)重定向方式

    系统:windows为主 python 版本:2.7 1. 背景 在Python中,文件对象sys.stdin.sys.stdout和sys.stderr分别对应解释器的标准输入.标准输出和标准出错流 ...

  8. python 中的 sys.stdin ,sys.stdout 和sys.stderr

    文档解释: File objects used by the interpreter for standard input, output and errors: stdin is used for ...

  9. Python 标准库之 sys 模块详解

    Python sys 模块详解 1. 简介 "sys"即"system","系统"之意.该模块提供了一些接口,用于访问 Python 解释器 ...

最新文章

  1. python自动点赞_用Python模拟技巧带你实现自动抽屉登录自动点赞
  2. GitHub Universe 2021|MS Reactor 邀你共聚年度盛会
  3. 工具包:Safetype Config使用
  4. scrapy-redis爬虫如何发送POST请求
  5. 发现VB6中SAX的乐趣[转]
  6. 升级到ASP.NET2.0之后的疑问
  7. 阿里云,并不是比谁聪明,而是更早面临那些疼痛
  8. 我的web2.0作品:畅想网络应用系统(采用JavaScript、Jquery、Ajax 等制作,完成时间10天)...
  9. android日志统计管理,时间日志app下载-时间日志(时间统计管理)下载v1.1.1 安卓版-西西软件下载...
  10. 解决主页被劫持的dos脚本
  11. python 登录新浪微博_模拟登录新浪微博(Python) - 转
  12. Redis从入门到精通(二)
  13. dct变换的主要优点有哪些_【WIX维克斯】MT、AT、AMT、CVT、DCT都有哪些是骗人的?...
  14. SQL经典案例(学生表,课程表,选课表,教师表) 练习
  15. 《疯狂Java讲义(第4版)》-----第4章【控制台五子棋】
  16. 第一冲刺阶段——站立会议第六天4月23日
  17. AppleScript学习笔记(一)初识AppleScript
  18. 【深度学习】NIN (Network in Network) 网络
  19. X线DR医学图像 --- DR医用滤线栅及摩尔纹详解 (三) 摩尔纹的仿真
  20. 项目二:实现简单的金山打字通

热门文章

  1. 仿猎豹垃圾清理(实现原理+源码)
  2. 食在广州 | 爬取分析广州6万+餐饮门店数据
  3. Linux系统新增SWAP分区
  4. Java集合类之List的ArrayList之增删改查
  5. 弘辽科技:2020全民参与直播电商模式,新时代的营销战场
  6. 软件测试——fiddler工具(1)
  7. 猿创征文|国产数据库之OceanBase的SQL详解
  8. Java基础(28)数据输入输出流、内存操作流、打印流、随机访问流、序列化与反序列化流、Properties类(集合)
  9. ssh研究生毕业环节管理系统 ssh框架 MVC模式MYSQL
  10. android录音函数,Android - 实现录音变声播放