在Python中解析空选项

2024-05-02

我有一个应用程序,允许您将事件数据发送到自定义脚本。您只需布置命令行参数并指定什么事件数据与什么参数相匹配。问题是这里没有真正的灵活性。您制定的每个选项都将被使用,但并非每个选项都必须有数据。因此,当应用程序构建要发送到脚本的字符串时,某些参数为空,并且 python 的 OptionParser 会出错,并显示“错误:--someargument 选项需要一个参数”

由于数据点超过 200 个,我不可能编写单独的脚本来处理可能参数的每种组合(这将需要 2^200 个脚本)。有没有办法在 python 的 optionparser 中处理空参数?


抱歉,我的第一个答案误解了这个问题。您可以使用以下命令实现为命令行标志提供可选参数的能力callback定义选项时的操作类型。使用以下函数作为回调(您可能希望根据您的需求进行定制)并为每个可以选择接收参数的标志配置它:

import optparse

def optional_arg(arg_default):
    def func(option,opt_str,value,parser):
        if parser.rargs and not parser.rargs[0].startswith('-'):
            val=parser.rargs[0]
            parser.rargs.pop(0)
        else:
            val=arg_default
        setattr(parser.values,option.dest,val)
    return func

def main(args):
    parser=optparse.OptionParser()
    parser.add_option('--foo',action='callback',callback=optional_arg('empty'),dest='foo')
    parser.add_option('--file',action='store_true',default=False)
    return parser.parse_args(args)

if __name__=='__main__':
    import sys
    print main(sys.argv)

从命令行运行你会看到:

# python parser.py
(<Values at 0x8e42d8: {'foo': None, 'file': False}>, [])

# python parser.py --foo
(<Values at 0x8e42d8: {'foo': 'empty', 'file': False}>, [])

# python parser.py --foo bar
(<Values at 0x8e42d8: {'foo': 'bar', 'file': False}>, [])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Python中解析空选项 的相关文章

随机推荐

  • 我可以合法地写入常量向量指向的数据吗?把它分类?

    我有一个常量整数向量const vector
  • 编写代码来处理单词列表并删除单词中的所有空格

    该代码应该检查字符串数组并查看单词之间是否有空格 这是一个例子 every near ing checking food stand value 应改为hold every nearing checking food stand value
  • Node + Express + Nginx 未设置 Cookie

    我有一个使用 Express 的 Node 应用程序 我尝试为我的客户端设置 cookie 它在本地环境 http 上运行良好 但是一旦我投入生产 https 我就很好地收到了cookie 我可以在响应中看到它 但它没有设置 任何想法 Ng
  • 如何从数据框列表中提取某些列

    我有一个数据框列表 l 这些数据框本身就是二维矩阵 对于我的工作 我需要创建另一个列表 其中的数据帧是原始列表中数据帧的子集 例如 列表l1有两个数据帧D1和D2 分别有10和12个不同的数据列 现在我想创建一个新列表 l2 它也有两个数据
  • Laravel - SQL - SQLSTATE[01000]:警告:1265 第 1 行列“nsfw”的数据被截断

    我试图保护数据库中的一些数据并收到以下错误 SQLSTATE 01000 警告 1265 第 1 行的列 nsfw 的数据被截断 nsfw 列的标准值是 0 这是我的桌子 nsfw 列也在模型中 fillable array 我想检测是否选
  • 获取 grails 中单击的提交按钮的名称

    在表单上我有两个提交按钮
  • PHP、MySQL、PDO 事务 - fetchAll() 可以在 commit() 之前吗?

    更多交易问题 我现在拥有的是一堆串在一起的查询 如果有任何失败 都会手动反转 代码块1 stmt1 db gt prepare Update table1 set col col 1 if stmt1 db gt execute stmt2
  • R mapbox / 带有动画和 shapefile 的绘图

    我正在制作一个动画 显示地图上绘制的空间数据 并带有基于日期的动画滑块 除此之外 我想绘制一个随时间变化的形状文件 我的动画在没有 shapefile 的情况下也能正常工作 绘制标记和形状文件不会显示形状文件 似乎是两者之间的某种脱节add
  • 如何在 MongoDB 中存储 blob 数据?

    我想知道是否可以在 mongodb 中插入 blob 数据 这个过程是什么 是否需要任何其他软件 在数据库中存储大文件是没有问题的 使用mongofiles See mongodb com 上的文章 https www mongodb co
  • 正则表达式 IPv6 验证和可选的方括号?

    大家好 这里的正则表达式新手 我正在尝试编写一个验证 IPv6 地址的正则表达式 我还没有添加端口部分 我想先让地址部分工作 这是我到目前为止所拥有的 0 9A Fa f 这使得左括号和右括号是可选的 但正如您所看到的 它们是独立可选的 有
  • 如何使用 hostPath 将单个文件映射到 kubernetes pod 中?

    我有一个自己的 nginx 配置 home ubuntu workspace web conf由脚本生成 我更喜欢把它放在下面 etc nginx conf d除了default conf 下面是nginx yaml apiVersion
  • JS专用鼠标按键

    我的鼠标侧面有两个按钮 其默认行为是 后退 和 前进 我想知道的是是否可以在 JavaScript 中检测这些鼠标按钮的点击 或者这些按钮是否是类似于键盘的 播放 音量调高 和 无线开 关 的 特殊 按钮纽扣 我不知道任何特定的鼠标事件 但
  • 修改变量后动态重新导入 Sass 部分

    我正在开发一个利用 Sass 预编译的 Twitter Bootstrap 的项目 每次覆盖变量时 我都必须重新导入 bootstrap sass文件到我的项目主样式表以使覆盖生效 您是否知道如何使此过程自动进行 以便每次修改变量时立即生效
  • AJAX 与 Facebook 身份验证

    我已经构建了一个完全基于 AJAX 的应用程序 它没有页面刷新并使用 AJAX 加载所有内容 现在我想以一种不会重定向用户进行页面刷新的方式嵌入 Facebook 身份验证 目前 Facebook 的工作方式如下 用户通过单击 Facebo
  • 无法使用 sysctl 更改每个进程的最大打开文件数

    我的实际极限是1024 ulimit a core file size blocks c 0 data seg size kbytes d unlimited scheduling priority e 0 file size blocks
  • 指定随机粒子起始颜色而不进行动画更改?

    有没有办法让粒子根据当前的 颜色渐变 产生随机的每个粒子颜色 粒子在其生命周期内不会改变颜色 它们只是在出生时从 颜色渐变 的某个地方被分配了一种颜色 并保持该颜色直到它们死亡 其结果将是出生时的粒子与从红色到蓝色的混合颜色的混合 在我的测
  • 在无头模式下独立运行 Unity,同时捕获屏幕截图

    我需要创建一个在无头模式下运行的统一项目 使用 batchmode 命令 但它必须捕获屏幕截图 例如每一秒并将它们写到一个文件中 我知道在无头模式下 您需要强制调用 Camera Render 才能渲染任何内容 在捕获第一个屏幕截图后 时间
  • Python Numpy TypeError:输入类型不支持 ufunc 'isfinite'

    这是我的代码 def topK dataMat sensitivity meanVals np mean dataMat axis 0 meanRemoved dataMat meanVals covMat np cov meanRemov
  • Apache CXF - WS 解决如何设置 From、ReplyTo、Headers

    我有一个问题 我们正在尝试使用 Apache CXF 实现 WS Addressing 我可以设置一些标头 例如 To 或 Action 但我找不到设置其他标头 例如 From ReplyTo 或 FaultTo 的方法 有人知道该怎么做吗
  • 在Python中解析空选项

    我有一个应用程序 允许您将事件数据发送到自定义脚本 您只需布置命令行参数并指定什么事件数据与什么参数相匹配 问题是这里没有真正的灵活性 您制定的每个选项都将被使用 但并非每个选项都必须有数据 因此 当应用程序构建要发送到脚本的字符串时 某些