介紹
在算法實際工作中,我們的輸入數據往往是不確定的,而且是不管更新的,比如今天你的輸入是某個平台的數據,明天可能是另一個平台得到的數據,或者說你需要一個腳本來解決數據更新的問題又不需要重新改寫腳本,那么把輸入數據定義在腳本程序外會是一個好的選擇,那就是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'的。