Optpase:检测是否指定了选项或选项arg

我正在为我的程序使用optparse进行命令行解析. 我 想知道是否可以检测是否是选项或选项 - ARG 用户是否在命令行上指定了是否指定. 请这样做 不建议默认值解决方案. 谢谢.

# 回答1

山姆·史密斯(Sam Smith)写道: 默认值有什么问题? 无论如何,这是hasattr()方法: 彼得
# 回答2

>>默认值有什么问题? 默认值没有错. 但是我认为 应该有某种方法来检测用户是否指定了 是否在命令行上的特定选项或选项 - ARG. 您的 解决方案在某种意义上可以检测到 指定或未指定选项或选项-ARG,但现在默认值 任务将行不通. 我真正想要的是指定具有默认值的选项 这也可以由用户指定. 用户可以决定 在命令行上指定此选项,如果不是,则该选项应 取默认值. 但是我应该能够查询是否这样 该值的设置是由于OptParse填充而完成的 价值或已由用户完成. 用法场景: 我正在实施多级命令行计划. 在窗户上 类似于"网 /?"的平台 命令依次具有"净使用 /?",, "净计算机 /?" etc命令路线. 我的一些命令线共享相同的选项 - 但是默认 与它们相关的价值是不同的. 在一个 我试图检测用户是否指定的命令路线 选项与否,如果不为选项分配不同的值. 不论使用情况如何,我认为这很重要 使模块用户能够找出选项是否有 用户指定或未指定. 一些建议: *也许可以将方法添加到选项类,ISSPECIFIED() 如果在命令行上找到该选项,它将返回true 如果找不到该选项,则Optparse已阅读或错误 在命令行上. *添加能力查询值的值实例 parse_args 谢谢
# 回答3

山姆·史密斯(Sam Smith)写道: 我不. 我还没有看到一个令人信服的例子 内省确实是必要的. 但是,如果您确实这样做,然后将其放在后处理中. 设置默认值 值到在命令行上无法指定的内容,测试 为此价值,并进行相应地进行. 我很确定这个话题已在 Optik-users邮寄列表 (http://sourceforge.net/mailarchive/f...forum_id=6064). 我 在那里建议一些研究,如果您仍然相信,请在此处发布. 我怀疑Greg Ward(Optik/Optparse的作者)是否会看到您 帖子在这里. - David Goodger
# 回答4

山姆·史密斯(Sam Smith)写道: 我的疑问没有承受,这是实现所需的方法(我认为) 几行的行为 - 没有超出您所看到的测试,因为我几乎不会 我自己使用它: 导入集 导入OPTPARSE作为OP C 劳斯值(op.values): def __init __(self,默认): op.values .__ Init __(self,默认) self.pecified = sets.sets.set([]) def __setattr __(自我,名称,值): self .__ dict __ [name] =值 如果hasattr(self,"指定"): self.specified.add(name) DEF测试(ARGS): p = op.optionparser() p.add_option(" - f",dest =" filename",default =" tmp.txt") v =值(p.defaults) p.parse_args(args,v) 如果在V.Specified中的"文件名": info ="指定:" 别的: info ="使用默认值:" 打印信息,V.FileName 测试([" - f"," other.txt"]) 测试([" - f"," tmp.txt"]) 测试([]) 彼得

标签: python

添加新评论