関数 - verbosity python
sys.argvはオプションの引数を処理できますか? (4)
sys.argv
の長さだけを使う
if len(sys.argv) == 2:
# do X
else:
# do Y
from sys import argv
script, lira_cbt, [eur_hedge] = argv
if eur_hedge == None:
#Do x
else:
#Do y
引数としてlira_cbtだけ(xを実行)、またはlira_cbtとeur_hedgeの両方(yを実行)を使用して実行できるようにします。 これはsys.argvで達成できますか?
あなたは単にsys.argv
の長さをチェックすることができます。
if len(sys.argv) < 2:
# Error, not enough arguments
lira_cbt = sys.argv[1]
if len(sys.argv) == 2:
# Do X
else:
eur_hedge = sys.argv[2]
# Do Y
もう1つの選択肢は、 try
を使用してargvリストから値を抽出することです。
lira_cbt = sys.argv[1]
try:
eur_hedge = sys.argv[2]
except IndexError:
eur_hedge = None
if eur_hedge == None:
# Do X
else:
# Do Y
また、 getoptで、コマンドライン引数のより柔軟なパーサーを調べることもできます。
私が代わりのアプローチを提案するかもしれないならば:
from sys import argv
option_handle_list = ['--script', '--lira_cbt', '--eur_hedge']
options = {}
for option_handle in option_handle_list:
options[option_handle[2:]] = argv[argv.index(option_handle) + 1] if option_handle in argv else None
if options['eur_hedge'] == None:
#Do x
else:
#Do y