#python #cmd #parameters #arguments #system
#python #cmd #параметры #аргументы #система
Вопрос:
Я пытаюсь получить аргументы в python с помощью модуля sys. Вот мой код:
import sys
import os
path = sys.argv[0]
argument = sys.argv[1]
print("Hello, Temal Script installed.")
if argument == "-h":
os.system("cls")
print("Available comamnds:n-h = helpn-i = informationn-v = version")
if argument == "-i":
os.system("cls")
print("This is a script written by Temal")
if argument == "-v":
os.system("cls")
print("Version: 1.0")
Если я введу в cmd «main.py -h» это отлично работает. Но если я введу только «main.py » он выводит мне сообщение об ошибке:
Traceback (most recent call last):
File "C:Windowscmd.py", line 5, in <module>
argument = sys.argv[1]
IndexError: list index out of range
Я знаю, почему я получаю эту ошибку, потому что в списке будет только один элемент (путь), потому что я не ввожу второй аргумент. Но как я могу сделать, чтобы скрипт игнорировал эту ошибку, если второй аргумент не задан? Если кто-то вводит main.py без аргументов я только хочу распечатать этот текст: Здравствуйте, установлен скрипт Temal.
Или, может быть, есть что-то вроде в PHP «isset»?
Я тоже новичок в этой теме, поэтому, пожалуйста, отвечайте просто и не сложно.
Спасибо!
Комментарии:
1. индекс списка вне диапазона означает, что указанное значение индекса еще не объявлено .. его нет в объявленном вами массиве!
2. да, так как же мне игнорировать эту ошибку, если она не объявлена?
3. добавьте проверку .. для проверки длины массива
Ответ №1:
Необходимо проверить длину sys.argv
переменной.
import sys
import os
path = sys.argv[0]
if len(sys.argv) > 1:
argument = sys.argv[1]
print("Hello, Temal Script installed.")
if argument == "-h":
os.system("cls")
print("Available comamnds:n-h = helpn-i = informationn-v = version")
elif argument == "-i":
os.system("cls")
print("This is a script written by Temal")
elif argument == "-v":
os.system("cls")
print("Version: 1.0")
Кроме того, посмотрите на модуль argparse.
import argparse
import os
parser = argparse.ArgumentParser(description="My App")
parser.add_argument('-i', '--info', action='store_true',
help="show information")
parser.add_argument('-v', '--version', action='store_true',
help="show version")
args = parser.parse_args()
if args.info:
os.system("cls")
print("This is a script written by Temal")
elif args.version:
os.system("cls")
print("Version: 1.0")
Запуск main.py -h
выводит:
usage: help.py [-h] [-i] [-v]
My App
optional arguments:
-h, --help show this help message and exit
-i, --info show information
-v, --version show version
Комментарии:
1. Большое вам спасибо, это сработало!