2016-12-06 5 views
0

initial_runTrueに設定されているスクリプトの最初の繰り返し/実行時に、呼び出す引数を参照する必要があるアプリケーションで引数を書きたいと思います。それ以外の場合は、この値はfalseのままにしてください。このパラメータは設定ファイルで設定されます。Pythonでbooleanコマンドライン引数を書き込む方法は?

私が書いた現在のコードは以下のとおりです。 Trueの値を返すためにこのコードで何を変更する必要がありますか?現在は値Falseのみを返します。

import sys 
# main 
param_1= sys.argv[0:] in (True, False) 
print 'initial_run=', param_1 
+4

コマンドライン引数は常に文字列です - Cプログラムのエントリポイントは 'int main(int argc、char * argv)'で指定され、 'execv'ファミリのsyscallsは引数をC文字列の配列として取ります。それはオペレーティングシステムがそれらを手放す方法なので、変換、解析、またはキャストされることなく、他のものになる可能性はほとんどありません。 –

+3

標準ライブラリの一部であるargparse(http://stackoverflow.com/questions/15008758/parsing-boolean-values-with-argparse)を使用できます。サードパーティのライブラリの中で、Clickは良い選択肢です(http://click.pocoo.org/5/options/#boolean-flags)。 –

答えて

1

# ./my_script.py true 

ブールはやっによってobtinedすることができます。

import sys 

initial_run = sys.argv[1].lower() == 'true' 

この方法では、最初の引数を小文字にして 'true'と比較しています。比較すると、文字列が一致する場合はブール値True、そうでない場合はブール型Falseが返されます。

0

変更

param_1 = sys.argv[0:] in (True, False) 

へ:

コマンドラインからスクリプトを実行する
param_1 = eval(sys.argv[1]) 
assert isinstance(param_1, bool), raise TypeError('param should be a bool') 
+0

'bool'は' 'True''と' 'False''を' True'と 'False'に変換しません。文字列に 'bool'を呼び出すことは' len(string)!= 0'と同じです。 – user2357112

+0

はい、これを修正しました。 –

関連する問題