2016-12-16 79 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 

我有所有的位置參數,有助於正確的幫助..