2016-12-16 49 views
-1

我正在制作一个脚本,它自动将bandcamp购买的专辑下载并重命名到我的服务器。现在我传递sys.argv中的脚本像Python argparse和sys.argv

python script.py Artistname Albumname Year DownloadLink Genre 

然后在脚本中,我设定的变量,比如

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文档,但我似乎无法使其工作..任何帮助?

+0

你不能让哪部分工作?你的代码在哪里? – UnholySheep

+0

不是真的回答你的问题,对不起,但我很喜欢[docopt](http://docopt.org/)... –

+0

对于像这样的简单输入'argparse'不会让事情变得更容易,你可以只需复制5''positionals'。但是如果你需要添加更多的控件,它可以是一个很大的帮助。你试过什么了? – hpaulj

回答

1

您尚未指定实际问题。话虽如此,我更喜欢在函数中定义我需要的参数。

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

我已经试过这

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 Artist Album Year URL Genre 

脚本它给我一个错误全球名称释放没有定义。错误在哪里?如果我运行

script.py -h 

我有所有的位置参数,有助于正确的帮助..