2016-12-16 9 views
-1

私は、アルバムをバンドキャッシュから自動的にダウンロードして名前を変更するスクリプトを作成しています。今の私はPython argparseとsys.argv

artist = sys.argv[1] 
album = sys.argv[2] 
year = sys.argv[3] 
link = sys.argv[4] 
genre = sys.argv[5] 
do commands with these vars 

のような変数は、今私があまりにも少し助けコマンドで多分argparse代わりに使用していた設定スクリプトで、その後

python script.py Artistname Albumname Year DownloadLink Genre 

ようなスクリプトにsys.argvのを渡しています。私はそれについてのPythonのドキュメントを読んだが、私はそれが動作するように思わない..どんな助け?

+0

あなたは仕事をどの部分をすることはできませんか?あなたのコードはどこにありますか? – UnholySheep

+0

あなたの質問に本当に答えることはできません。申し訳ありませんが、[docopt](http://docopt.org/)が好きです... –

+0

このような単純な入力では、「argparse」は何も簡単にはできません。 5つの 'ポジション 'でこれを複製するだけです。しかし、コントロールを追加する必要がある場合、大きな助けになる可能性があります。これまでに何を試しましたか? – hpaulj

答えて

1

実際の問題を指定していません。つまり、私は必要なargsを関数で定義する方が好きです。

import argparse 

def cli_args(self): 
    parser = argparse.ArgumentParser(
     description='This is an example') 
    parser.add_argument('--arg1', dest='agr1', required=True, 
         help='the first arg. This is required') 
    parser.add_argument('--arg2', dest='agr2',default=0, 
         help='another arg. this will default to 0') 
    # return dictionary of args 
    return vars(parser.parse_args()) 
0

click.pocoo.orgを試してください。argparseは気にしないでください。使用状況の自己文書化例えば

(>パイソンscript.py --count 3 --nameニコライのように起動します):代わりにオプションの

import click 

@click.command() 
@click.option('--count', default=1, help='Number of greetings.') 
@click.option('--name', prompt='Your name', 
       help='The person to greet.') 
def hello(count, name): 
    """Simple program that greets NAME for a total of COUNT times.""" 
    for x in range(count): 
     click.echo('Hello %s!' % name) 

if __name__ == '__main__': 
    hello() 

てみてくださいする@ click.argumentあなたが正確に何をしたい場合トピックに書いてある。

+0

なぜdownvote?完全に正当な答えのように思える! +1。 –

0

私は私が

script.py Artist Album Year URL Genre 

でスクリプトを実行すると、この

def main():                              

parser = argparse.ArgumentParser(description='xxxx', prog='xxxx') 
parser.add_argument('artist', help='Artist name, separted by "_". Ex: The_Beatles') 
parser.add_argument('album', help='Album title, separated by "_". Ex: The_Joshua_Tree') 
parser.add_argument('yar', help='Release year') 
parser.add_argument('url', help='Bandcamp download url inside bracelets.') 
parser.add_argument('genre', help='Album genre, separted by a point. Ex: hip.hop') 
args = parser.parse_args() 

main() 

は次にスクリプトで私はそれが私にそのエラーを与える

release = ("%s - %s - (%s) - [FLAC]"%(artist,album,year)).replace('_',' ')    

を持って試してみましたグローバル名リリース定義されていません。エラーはどこですか?私は

script.py -h 

を実行した場合、私はすべての位置引数で正しいの助けを持っているし、助け..