python - 尝试指定命令行参数但无法弄清楚 - 不完全确定 'dest' 和 'store' 在 optparse 中做什么

标签 python bash parsing command-line

所以我试图让我的程序接受命令行参数并在我的脚本中使用它。我阅读了 argparse 和 optparse 文档,但我仍然迷失方向。 我想做的是让我的代码在命令行上执行此操作:

./program <-p port> <-s> [required1] [required2]

-p 是可选的,我想在我的脚本中使端口成为一个变量,如下所示:

server_address = ('some server name', **port**)

我认为这就是 storedest 会做的...就像 store 会采用 port argument 和 dest 将是变量名称,我可以像 program.port 那样调用它。然而,它不是这样工作的,我无法找到或破译 store 和 dest 到底做什么的解释。

我是 Python 新手,所以这可能不是一个格式良好的问题。

最佳答案

因此,请遵循文档:

  1. 您创建一个解析器
import argparse
parser = argparse.ArgumentParser(description='Some helpful text about what your function does')
  • 您添加参数,可选参数前面有“-”,请参见下文
  • parser.add_argument('-p', '--port', type=int, default=0, help='port')
    parser.add_argument('-s', help='I don\'t know what this is')
    parser.add_argument('required_1')  # Note the lack of dashes
    parser.add_argument('required_2')
    
  • 您需要通过函数调用来解析参数
  • args = parser.parse_args()
    
  • 这将创建一个 namespace object然后您可以从中访问变量,请参见下文
  • port = args.port
    or
    port = vars(args)['port']
    req1 = args.required_1
    req2 = args.required_2
    etc...
    

    有关命名空间对象的更多信息,请查看此 question

    希望有帮助。

    关于python - 尝试指定命令行参数但无法弄清楚 - 不完全确定 'dest' 和 'store' 在 optparse 中做什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57984830/

    相关文章:

    python - 如何从一个文件 block 中解压许多 msgpack 数据

    python - ruamel.yaml:如何在顶层和其他元素内添加新元素

    python - 嵌套 for 循环搜索 2 个列表

    linux - 如何为 ls - l 命令的列着色

    linux - 获取目录中最新条目(文件或目录)的日期

    java - Android 应用程序中 JSON 对象绑定(bind)的替代方案

    python - CqlEngine - sync_table() KeyError : 'cqlengine'

    ruby - 使用 sed 递归查找和替换

    java - 逐行解析Java中的XML

    c++ - 不使用正则表达式解析 HTTP 请求