我使用argparse有些困难。 我有一个我想要使用的GUI应用程序:
不允许这样做:GUI.exe -o file_directory
我知道如何做1和2而不是3
是否有人已经这样做过或者能给我一些线索?
提前感谢您的帮助。
答案 0 :(得分:1)
仅使用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
答案 1 :(得分:0)
如果你的问题是如何设法获得两个参数,你可以在解析你的参数时提出一个条件:
if args.file_directory2 and not args.file_directory2:
parser.error('file_directory is required to use file_directory2')