Ответ 1
if len(sys.argv) == 1:
# Print usage...
Первым элементом sys.argv всегда является либо имя самого script, либо пустая строка. Если sys.argv имеет только один элемент, тогда не должно быть аргументов.
как распечатать справочную информацию, если никакие аргументы не передаются на python script?
#!/usr/bin/env python
import sys
for arg in sys.argv:
if arg == "do":
do this
if arg == ""
print "usage is bla bla bla"
то, что мне не хватает, это строка if arg == ""
, которую я не знаю, как выразить:(
if len(sys.argv) == 1:
# Print usage...
Первым элементом sys.argv всегда является либо имя самого script, либо пустая строка. Если sys.argv имеет только один элемент, тогда не должно быть аргументов.
if len(sys.argv)<2:
Имя программы всегда находится в sys.argv [0]
Как говорили другие, вы можете проверить, были ли приняты какие-либо аргументы:
#!/usr/bin/env python
import sys
args = sys.argv[1:]
if args:
for arg in args:
if arg == "do":
# do this
else:
print "usage is bla bla bla"
Однако существует модуль Python под названием OptParse, который был явно разработан для анализа аргументов командной строки при запуске script. Я бы предложил изучить этот вопрос, так как он немного более "совместим с стандартами" (как и в случае, это ожидаемый и принятый метод разбора командной строки в сообществе Python).
Следующее - это очень Pythonic способ решения вашей проблемы, потому что он преднамеренно генерирует исключение в try.. кроме:
import sys
try:
sys.argv[1:] // do sth with sys,argv[1:]
except IndexError:
print "usage is..."
sys.exit()
#!/usr/bin/env python
import sys
args = sys.argv[1:]
if args:
for arg in args:
if arg == "do":
# do this
else:
print "usage is bla bla bla"
На основании ответа Noctis Skytower
import sys
args = sys.argv[1:]
for arg in args:
if arg == "do":
# do this
if not args:
print "usage is bla bla bla"
Я рекомендую использовать lib optparse [1], более элегантно: D
[1] Более мощный синтаксический анализатор командной строки < http://docs.python.org/library/optparse.html >
import argparse
def parse_args():
parser = argparse.ArgumentParser(
add_help=True,
)
# your arguments here
if len(sys.argv) == 1:
parser.print_help()
sys.exit(0)
else:
options = parser.parse_args()
return options