如何添加带有可选标志的必需参数

问题描述 投票:1回答:1

我在写不同的东西。命令行需要处理两个文件-左和右。我希望突触像这样:

differ.py [-f] FILE1 [[-t] FILE2]

WHERE -f是接受FILE1的选项,-t接受FILE2。FILE1是必需的,可以从stdin或真实文件中读取FILE2。我希望这样使用它:

differ.py myfile1
differ.py myfile1 myfile2
differ.py myfile1 -t myfile2
differ.py -f myfile1
differ.py -f myfile1 myfile2
differ.py -f myfile1 -t myfile2

argparse模块可以吗?如果是这样,那又如何?预先感谢。

python argparse
1个回答
0
投票

无法通过argparse来完成。它违反了太多的设计。参数不能是位置参数和选项值,并且位置参数不取决于选项的存在或位置。您甚至无法使用互斥组解决任何此类问题,因为位置参数不能成为此类组的一部分。帮助格式化程序也不是为此目的而设计的。即使将所有验证和帮助格式从argparse中移到了自己的代码中,您也会被覆盖得太多,而从argparse中得到的东西却很少,以至于解析该命令会更容易手动排队。

如果这确实是您想要的接口,则手动解析sys.argv最简单。

© www.soinside.com 2019 - 2024. All rights reserved.