python - argparse 具有不同的模式

标签 python argparse

我在使用 argparse 时遇到一些困难。 我有一个 GUI 应用程序,我想像这样使用:

  1. GUI.exe => 打开 GUI 应用程序
  2. GUI.exe -s file_directory1 => 无需打开即可播放 GUIX.exe
  3. GUI.exe -s file_directory1 -o file_directory2 => 与 2 相同。

不允许这样做:GUI.exe -o file_directory

我知道如何执行 1 和 2,但不知道如何执行 3

有人已经这样做过或者可以给我一些线索吗?

预先感谢您的帮助。

最佳答案

仅使用 add_argument 且不进行手动检查是不可能实现您想要的效果的。正如 maggick 已经说过的,您始终可以在解析命令行后检查用户是否使用了正确的选项,手动执行以下操作:

if args.option1 and not args.option2:
    parser.error('some error')

但是我相信您的 -s 选项的作用有点像 subcommand 。如果是这种情况,最好使用 add_subparsers并将 file_directory1 作为其必需参数,同时将 -o 作为其选项:

import argparse

parser = argparse.ArgumentParser()
subs = parser.add_subparsers()

s_parser = subs.add_parser('sname')
s_parser.add_argument('file_directory1')
s_parser.add_argument('-o', dest='file_directory2')

并将其用作:

prog   # -> launch gui
prog sname file_directory1
prog sname file_directory1 -o file_directory2

关于python - argparse 具有不同的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30457162/

相关文章:

python - argparse 匹配命令行参数和脚本添加的参数之间最接近的参数

python argparse : use arguments as values for a list

python - 从 IronPython 2.6 脚本构建 .exe 时找不到模块 "random"

python - 在 Python 中打开一个没有换行符的大型 JSON 文件进行 csv 转换 Python 2.6.6

python - 如何将动态生成的网页输出到 .html 页面而不是 .py cgi 页面?

python - 在 PyCharm 中设置虚拟环境

c++ - Python 等效于 std::set 和 std::multimap

python - 如何在Python中将交互式提示与argparse结合起来?

python - max_help_position 在 python argparse 库中不起作用

Python 多个用户参数列表