Nat*_*man 7 python command-line
我正在用Python编写一个接受命令行参数的程序.我正在解析它们getopt(虽然我选择的getopt不是天主教婚姻.我更愿意使用任何其他图书馆).有没有办法指定必须给出某些参数,还是我必须手动确保给出所有参数?
编辑:我将所有选项实例更改为参数以响应公众抗议.不能说我对那些帮助我的人没有回应:-)
至于我,我更喜欢使用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()
Run Code Online (Sandbox Code Playgroud)
您应该手动检查是否给出了所有参数:
if len(args) != 1:
parser.error("incorrect number of arguments")
Run Code Online (Sandbox Code Playgroud)
强制选择对我来说似乎很奇怪 - 它们被称为选项而不是没有任何意义......
最简单的方法是自己动手.即
found_f = False
try:
opts, args = getopt.getopt(sys.argv[1:], "ho:v", ["help", "output="])
except getopt.GetoptError, err:
print str(err)
usage()
sys.exit(2)
for o, a in opts:
if o == '-f':
process_f()
found_f = True
elif ...
if not found_f:
print "-f was not given"
usage()
sys.exit(2)
Run Code Online (Sandbox Code Playgroud)