Как проверить, установлен ли аргумент из командной строки?
Я могу назвать свой script следующим образом:
python D:\myscript.py 60
И в script я могу сделать:
arg = sys.argv[1]
foo(arg)
Но как я могу проверить, был ли аргумент введен в вызове командной строки? Мне нужно сделать что-то вроде этого:
if isset(sys.argv[1]):
foo(sys.argv[1])
else:
print "You must set argument!!!"
Ответы
Ответ 1
Не используйте sys.argv
для обработки интерфейса командной строки; есть модуль для этого: argparse
.
Вы можете пометить аргумент, как требуется, передав required=True
в add_argument
.
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument("foo", ..., required=True)
parser.parse_args()
Ответ 2
len(sys.argv) > 1
Ответ 3
if len(sys.argv) < 2:
print "You must set argument!!!"
Ответ 4
Если вы используете Python 2.7/3.2, используйте модуль argparse
. В противном случае используйте модуль optparse
. Модуль позаботится о разборе командной строки, и вы можете проверить, соответствует ли количество позиционных аргументов ожидаемому.
Ответ 5
Я использую модуль optparse для этого, но я думаю, потому что я использую 2.5, вы можете использовать argparse, как предложил Алекс, если вы используете 2.7 или более
Ответ 6
for arg in sys.argv:
print (arg)
#print cli arguments
Вы можете использовать его для хранения аргумента в списке и использования его. Это более безопасный способ, чем использовать их как это sys.argv[n]
Нет проблем, если аргументы не заданы
Ответ 7
if(sys.argv[1]):
должен работать нормально, если нет аргументов sys.argv [1] будет (должно быть) null