Как мне выполнить несколько аргументов в консоли с помощью argparse?

#python #selenium-webdriver

#python #selenium-webdriver

Вопрос:

Я читал несколько часов и начинаю сдаваться, поэтому я здесь для наказания. Я пытаюсь запустить файл python, для которого требуются аргументы. В справке говорится

Использование: Eventbot.py [-h] [-id ID] [-num NUM] [—подождите, ПОДОЖДИТЕ] url

Я пытаюсь ввести python eventbot.py 1 1 https://www.eventbrite.com/e/cooking-at-home-with-yao-zhao-all-about-sichuan-pepper-tickets-137805759737

Но он говорит недопустимый аргумент 1 https://www.eventbrite.com/e/cooking-at-home-with-yao-zhao-all-about-sichuan-pepper-tickets-137805759737

Я попытался добавить —wait 1 в конце, но это не сработало.

 if __name__ == '__main__':
try:
    parser = argparse.ArgumentParser(description="Eventbrite bot to automate securing event tickets")
    parser.add_argument("url",    type=str, help="Eventbrite event URL")
    parser.add_argument("-id",    type=str, help="Ticket ID to purchase")
    parser.add_argument("-num",   type=str, help="Number of tickets to purchase")
    parser.add_argument("--wait", type=int, help="Seconds the browser should wait for DOM to load")
    args = parser.parse_args()
 

Комментарии:

1. Предполагая, что два 1 — это ID и NUM, и допустим, URL должен был быть google.com , попробуйте запустить python eventbot.py -id 1 -num 1 google.com

Ответ №1:

Поскольку аргументам -id and -num предшествует a - , это означает, что они не являются позиционными аргументами, как url аргумент. Поскольку эти аргументы не являются позиционными, они действуют точно так же, как ваш --wait аргумент, который также не является позиционным. Чтобы передать значение аргументу, укажите желаемое значение после имени аргумента, например,

 python eventbot.py -id 1 -num 1 https://www.eventbrite.com/e/cooking-at-home-with-yao-zhao-all-about-sichuan-pepper-tickets-137805759737