淘先锋技术网

首页 1 2 3 4 5 6 7

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()