44988


変数が空かどうかを調べ，空だった場合は途中終了する処理をしたいのですが，どのように書けばいいのでしょうか？test.pyという名前で以下のようなpythonスクリプトを書いて`python
test.py`と引数なしで実行したみたのですが，print文に書かれた内容が出力されません．どのように書き直せばいいのでしょうか？また，このような処理に関してより一般的な（エレガントな）方法があれば教えていただきたいです．

[code]

    import sys
    
    aaa = str(sys.argv[1])
    
    if(aaa == ''):
        print('You need args!')
        sys.exit()
    else:
        print('input argument is ', aaa)
    
[/code]


CC BY-SA 4.0
2018-06-22T07:31:31.757
44987
2018-06-22T11:48:57.397
2018-06-22T08:28:25.850
26604
26604
question
python
引数が無いかどうか調べる処理をしたい


引数がちゃんと 1 つ以上与えられているか検査するためには、`sys.argv` の内容を直接調べるのでなく引数の長さ (argc)
を調べるのが良いでしょう。

[code]

    if(len(sys.argv) <= 1):
        print('You need args!')
        sys.exit()
    
    # ここに到達できていれば sys.argv[1] は必ず存在するので、安全にアクセスできます。
    aaa = str(sys.argv[1])
    print('input argument is', aaa)
    
[/code]

* * *

また、質問文のプログラムは「変数が空文字列かどうか調べる」ことはきちんとできています。試しに `python test.py ''`
のように引数として空文字列を与えると、エラーを出さずに `You need args!` を出力します。

根本的な問題は、引数が無いときは `sys.argv[1]` が存在しないことです。このため引数無しで実行すると `IndexError: list
index out of range` というエラーが出ます。


CC BY-SA 4.0
2018-06-22T08:11:42.877
44988
2018-06-22T11:48:57.397
2018-06-22T11:48:57.397
19110
19110
44987
answer