sys.stdin.readline()
戻る前にEOF(または改行)を待機するため、コンソール入力がある場合は、ユーザー入力を待機readline()
します。代わりに、ヘルプを出力し、処理するものがない場合はエラーで終了し、ユーザー入力を待ちません。
理由:コマンドラインの動作が。に似ているPythonプログラムを作成しようとしていgrep
ます。
テストケース:
入力もパイプもありません。ヘルプを印刷してください
$ 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)