标准输入stdin
介绍
在算法实际工作中,我们的输入数据往往是不确定的,而且是不管更新的,比如今天你的输入是某个平台的数据,明天可能是另一个平台得到的数据,或者说你需要一个脚本来解决数据更新的问题又不需要重新改写脚本,那么把输入数据定义在脚本程序外会是一个好的选择,那就是stdin(标准输入)。
用法实例
使用stdin需要模块sys,这个是Python已经有的,不需要按照。下面我们写一个简单的脚本test.py来实验一下,
import sys
print('*****start*****')
for line in sys.stdin:
#这里可以按行处理数据
print(line)
print('*****completed*****')
然后我们随便新建一份数据,
vi data.txt
然后手动写入三行数据:
1 KFC
2 Burger king
3 McDonald
保存退出,然后输入到脚本test.py
cat data.txt | python test.py
# *****start*****
# 1 KFC
# 2 Burger king
# 3 McDonald
# *****completed*****
作为输入控制,你还可以只输入一部分数据,比我我只要第一条数据
head -1 data.txt | python test.py
# *****start*****
# 1 KFC
# *****completed*****
这样做也可以很灵活得控制输出,上面的例子是直接输出到屏幕显示,你也可以输出到某个文件保存,
cat data.txt | python test.py > output.txt
与input区别
input()方法和stdin()类似,不同的是input()括号内可以直接填写说明文字,然后sys.stdin.readlines( )会将标准输入全部获取,包括末尾的'\n',因此用len计算长度时是把换行符'\n'算进去了的,但是input( )获取输入时返回的结果是不包含末尾的换行符'\n'的。