2016-06-16 24 views
2

私はPythonでargparseライブラリを使用しようとしています。私はユーザーに次のようなことをさせたい:Python argparse:引数が少なすぎます

python my_script.py csv_name.csv [--dryrun] 

ここで、--dryrunはオプションのパラメータです。

次に、ユーザーにAPIキーと秘密キーを入力させます。私は私のコードを実行すると、私はAPIと秘密鍵を入力過ぎて取得し、私が手:

def main(): 
    api_key = getpass.getpass(prompt='Enter API Key: ') 
    secret_key = getpass.getpass(prompt='Enter Secret Key: ') 

    parser = argparse.ArgumentParser() 
    parser.add_argument("csv") 
    parser.add_argument("dryrun") 
    args = parser.parse_args() 

    validate_csv_name(args.csv) 

    is_dry_run = args.dryrun == '--dryrun' 

私が間違っているつもりですすべてのアイデア:

usage: my_script.py [-h] csv dryrun 
salesforceImporter.py: error: too few arguments 

ここに私のコードは?

ありがとうございます!

答えて

2

オプション--dry-run引数を追加するには、次のコードを使用することもできます。

parser.add_argument('--dry-run', action='store_true') 

python my_script.py csv_name.csv --dry-runを使用してスクリプトを呼び出すと、args.dry_runTrueであることになります。オプションを入れないと結果はFalse

4

次の構文を使用する場合:

parser.add_argument("csv") 
parser.add_argument("dryrun") 

をあなたは、位置としてこれらを追加している -を必要を - 引数。先頭のダッシュまたは2つの引数のみがオプションです。

the docs hereを参照してください:

The add_argument() method must know whether an optional argument, like -f or --foo, or a positional argument, like a list of filenames, is expected. The first arguments passed to add_argument() must therefore be either a series of flags, or a simple argument name. For example, an optional argument could be created like:

>>> parser.add_argument('-f', '--foo') 
+0

となりますので、私はparser.add_argument( " - dryrun")のようにしています。残念ながら、今私は取得:use:my_script.py [-h] [--dryrun DRYRUN] csv my_script.py:エラー:引数--dryrun:期待される1つの引数 – bclayman

関連する問題