. Одна вещь, о которой вам нужно знать, когда вы размышляете о частных членах, заключается в том, что если ваше приложение работает в режиме ожидания (как, например, когда вы работаете в среде общего хостинга), он не найдет их - параметр BindingFlags.NonPublic будет просто проигнорирован.
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, называемые argparse или OptParse (теперь не рекомендуется), которые были разработаны специально для анализа аргументов командной строки при запуске сценария. Я бы посоветовал изучить это, так как он немного более «совместим со стандартами» (например, это ожидаемый и принятый метод синтаксического анализа командной строки в сообществе Python).
#!/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"
if len(sys.argv) == 1:
# Print usage...
Первым элементом sys.argv всегда является либо имя самого скрипта, либо пустая строка. Если sys.argv имеет только один элемент, то аргументов не должно быть.
На основе ответа Ноктиса Скайтауэра
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>