sys.stdin.read函数
例子:
import sys
read=sys.stdin.read()
for i in range(len(read)):
print i,read[i],-1
运行,当执行到read=sys.stdin.read()
会阻塞,等待我们输入
我们输入:
h e
当输入,ctrl+D结束输入,这个时候ctrl+D是在换行后输入的,运行结果为:
我们只输入了三个字符,却输出来四个字符,重点看3后面,发现是换行,这是因为sys.stdin.read读取完数据后,会在数据后面自动加上’\n’,所以会输出四个字符
当我们ctrl+D直接在e后面输入,不换行输入了,运行结果为
我们会发现什么都没输出
当我们输入:
h e
12
ctrl+D换行之后输入
把12也读入进来了,所以sys.stdin.read是读取多行,当在2后面输入ctrl+D时,输出结果为:
所以ctrl+D哪行,sys.stdin.read不读取。
到此我们可以总结
- 会在输入内容的后面自动加上’\n’
- 读取多行
- ctrl+D结束读取
raw_input函数
程序:
# -*- coding:utf-8 -*-
read=raw_input("请输入内容:")
for i in range(len(read)):
print i,read[i],-1
raw_input将所有输入作为字符串看待,返回字符串类型。
可以看到会先将括号里的内容先输出,然后获取我们输入内容,当我们按下enter键,输出我们输入的内容,与sys.stdin.read相比没有加上’\n’