python - 使一组 ArgParse 参数可选
问题描述
我有这样的当前代码:
parser = argparse.ArgumentParser()
parser.add_argument('origin_x', help='X origin', type=float)
parser.add_argument('origin_y', help='Y origin', type=float)
parser.add_argument('origin_z', help='Z origin', type=float)
parser.add_argument('file_name', help='File to use')
当然,我可以这样称呼:
python my_prog.py 0 0 0 foo.txt
但是,我也想这样做:
python my_prog.py foo.txt
但不是这个:
python my_prog.py 0 foo.txt
有没有办法用现有的 API 做到这一点?这个答案显示了如何手动做类似的事情,但是有自动的方法吗?
解决方案
后处理可能是最好的选择:
parser.add_argument('origin', nargs="*", default=[0., 0., 0.], type=float)
parser.add_argument('file_name', help='File to use')
args = parser.parse_args()
if not len(args.origin) == 3:
parser.error("you done wrong..")
推荐阅读
- c++ - gcd 和 lcm 函数在具有 mingw 的 Vs 代码编辑器中不起作用
- r - 如何添加一个名为“moneyness”的变量,当没钱时取 TRUE,否则取 FALSE?
- scala - 为Dataframe中的每一行执行API调用(scala)
- amazon-web-services - AWS Step Function ContainerOverrides 清除已定义的环境变量
- c# - 使用动态运算符过滤键值对
- php - 创建项目 Laravel 安装失败
- python - 我不能使用 pyautogui
- python - 如何将 epsg:6991 以色列网格转换为 epsg:4326 wgs 84 python
- c++ - 当我将 unsigned char*(UIImage bytes) 转换为 GLuint(textureId) 时,使用 opengles 并调用 c++ 方法来处理它,但结果为 null
- r - 使用支持向量机训练垃圾邮件分类器