use*_*829 1 python getopt getopt-long
我只想使用getopt从带有长选项的命令行参数获取输入
例: ./script --empid 123
options, args = getopt.getopt(sys.argv[1:],['empid='])
for opt, arg in options:
print 'opts',opt
if opt in ('--empid'):
emp_Id = arg
Run Code Online (Sandbox Code Playgroud)
我收到getopt.GetoptError: option --empid not recognised以上代码的错误错误。可能出了什么问题?
您没有阅读以下文档getopt.getopt:
getopt.getopt(args,options [,long_options])
解析命令行选项和参数列表。[...]
long_options,如果指定,则必须是一个字符串列表,其中包含应支持的长选项名称。--选项名称中不应包含前导字符。需要参数的长选项应后跟等号(=)。不支持可选参数。只接受长选项,options应为空字符串。
因此,您必须执行以下操作:
options, args = getopt.getopt(sys.argv[1:], "", ['empid='])
Run Code Online (Sandbox Code Playgroud)
引用以下文档getopt:
注意
该
getopt模块是命令行选项的解析器,其API设计为Cgetopt()函数的用户熟悉。不熟悉Cgetopt()函数或希望 编写更少代码并获得更好帮助和错误消息的用户,应考虑改用argparse模块。
使用示例argparse:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--empid', type=int)
parser.add_argument('positionals', nargs='*')
args = parser.parse_args()
print(args.positionals, args.empid)
Run Code Online (Sandbox Code Playgroud)
该模块比更加灵活,先进,同时更易于使用getopt。