Что касается меня, я предпочитаю использовать модуль optparse , он довольно мощный, например, он может автоматически генерировать сообщение -h с помощью следующих параметров:
from optparse import OptionParser
parser = OptionParser()
parser.add_option("-f", "--file", dest="filename",
help="write report to FILE", metavar="FILE")
parser.add_option("-q", "--quiet",
action="store_false", dest="verbose", default=True,
help="don't print status messages to stdout")
(options, args) = parser.parse_args()
Вы должны вручную проверить, были ли заданы все аргументы:
if len(args) != 1:
parser.error("incorrect number of arguments")
Мне кажется странным делать опции обязательными - они называются опции не без смысла ...