sys.stdout sys.stdin
print 等价于
sys.stdout.write(‘HelloWorld!’)
raw_input 等价于
sys.stdin.readline()[:-1]
其实可以理解为,标准输入输出重定向
# coding:utf-8
from StringIO import StringIO
import sys
# 生成一个StringIO对象
buff =StringIO()
# 保存标准I/O流
temp =sys.stdout
# 将标准I/O流重定向到buff对象
sys.stdout =buff
# 这个打印不会打印在标准输出,所以不会显示 。打印到 buff 中
print 42, 'hello', 0.001
#恢复标准I/O流
sys.stdout=temp
print "2***"
print buff.getvalue()
import sys
f1 = open('22.txt', 'w')
temp =sys.stdout
sys.stdout = f1
print 'abcd'
sys.stdout = temp
f2 = open('33.txt', 'r')
temp =sys.stdin
sys.stdin = f2
a = sys.stdin.readline()[:-1] # a = raw_input() 也可以
print a
input() raw_input()区别
当输入为纯数字时
input返回的是数值类型,如int,float
raw_input返回的是字符串类型,string类型(raw_input不论输入什么返回的都是string类型)
输入字符串为表达式
input会计算在字符串中的数字表达式,而raw_input不会。
如输入 “57 + 3”:
input会得到整数60
raw_input会得到字符串”57 + 3”
也就是说input()输入严格按照Python的语法,是字符就自觉的加 ’ ’ ,数字就是数字(其实,input使用raw_input实现的)
StringIO
from StringIO import StringIO
# 生成一个StringIO对象,当前缓冲区内容为ABCDEF
s = StringIO('ABCDEF' )
# 从开头写入,将会覆盖ABC
s.write('abc')
# 每次使用read()读取前,必须seek()
# 定位到开头
s.seek(0)
# 将输出abcDEF
print s.read()
# 定位到第二个字符c
s.seek(2)
# 从当前位置一直读取到结束,将输出cDEF
print s.read()
s.seek(3)
# 从第三个位置读取两个字符,将输出DE
print s.read(2)
s.seek(6)
# 从指定位置写入
s.write('GH')
s.seek(0)
# 将输出abcDEFGH
print s.read()
# 如果读取所有内容,可以直接使用getvalue()
# 将输出abcDEFGH
print s.getvalue()