sys.stdin.readline()
在返回之前等待EOF(或換行),所以如果我有控制檯輸入,readline()
等待用戶輸入。相反,如果沒有任何可處理的內容,我想打印幫助並退出,並等待用戶輸入。如何避免使用python處理空標準輸入?
原因: 我正在尋找寫命令行行爲類似於grep
的python程序。
測試用例:
無輸入並沒有什麼管道,打印幫助
$ argparse.py
argparse.py - prints arguments
echo $? # UNIX
echo %ERRORLEVEL% # WINDOWS
2
命令行參數解析
$ argparse.py a b c
0 a
1 b
2 c
接受管道命令
$ ls | argparse.py
0 argparse.py
1 aFile.txt
parseargs.py清單:
# $Id: parseargs.py
import sys
import argparse
# Tried these too:
# import fileinput - blocks on no input
# import subprocess - requires calling program to be known
def usage():
sys.stderr.write("{} - prints arguments".fomrat(sys.argv[0])
sys.stderr.flush()
sys.exit(2)
def print_me(count, msg):
print '{}: {:>18} {}'.format(count, msg.strip(), map(ord,msg))
if __name__ == '__main__':
USE_BUFFERED_INPUT = False
# Case 1: Command line arguments
if len(sys.argv) > 1:
for i, arg in enumerate(sys.argv[1:]):
print_me(i, arg)
elif USE_BUFFERED_INPUT: # Note: Do not use processing buffered inputs
for i, arg in enumerate(sys.stdin):
print_me(i, arg)
else:
i=0
##### Need to deterime if the sys.stdin is empty.
##### if READLINE_EMPTY:
##### usage()
while True:
arg = sys.stdin.readline() #Blocks if no input
if not arg:
break
print_me(i, arg)
i += 1
sys.exit(0)
我想'Fasle'應該是'FALSE': - ),'argparse.py'應該是'parseargs.py' – mgilson
elif False應該做什麼?這是故意的嗎? – SilentGhost
我猜這只是造成它的一面旗幟......他可以改變,以迅速管理行爲... –