2016-12-16 2 views
-1

나는 bandcamp 구매에서 내 서버로 앨범을 자동으로 다운로드하고 이름을 바꾸는 스크립트를 만들고 있습니다. 지금은 스크립트에서 다음Python argparse and sys.argv

python script.py Artistname Albumname Year DownloadLink Genre 

같은 스크립트로 sys.argv에 전달하고 들어 내가 지금은 argparse 대신 어쩌면 약간의 도움이 너무 명령과 함께 사용하고 싶었

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 

같은 변수를 설정합니다. 나는 그것에 대해 파이썬 워드 프로세서를 읽었으나 작동하지 않는 것 같습니다. 어떤 도움이 필요합니까?

+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 

을 실행하면 나는