我在使用 argparse 时遇到一些困难。 我有一个 GUI 应用程序,我想像这样使用:
- GUI.exe => 打开 GUI 应用程序
- GUI.exe -s file_directory1 => 无需打开即可播放 GUIX.exe
- 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/