所以我试图让我的程序接受命令行参数并在我的脚本中使用它。我阅读了 argparse 和 optparse 文档,但我仍然迷失方向。 我想做的是让我的代码在命令行上执行此操作:
./program <-p port> <-s> [required1] [required2]
-p 是可选的,我想在我的脚本中使端口成为一个变量,如下所示:
server_address = ('some server name', **port**)
我认为这就是 store
和 dest
会做的...就像 store
会采用 port
argument 和 dest
将是变量名称,我可以像 program.port
那样调用它。然而,它不是这样工作的,我无法找到或破译 store 和 dest 到底做什么的解释。
我是 Python 新手,所以这可能不是一个格式良好的问题。
最佳答案
因此,请遵循文档:
- 您创建一个解析器
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/