如何解决如何制作不期望值的命令行参数?
from argparse import ArgumentParser
class MainClass:
@classmethod
def main(cls):
print("[Start of Main]")
# initialize argument parser
my_parser = ArgumentParser()
my_parser.add_argument("-i",help="input directory",type=str)
my_parser.add_argument("-o",help="output directory",type=str)
my_group = my_parser.add_mutually_exclusive_group()
my_group.add_argument("--txt",help="output as .txt files")
my_group.add_argument("--rtf",help="output as .rtf files")
# parse the argument
args = my_parser.parse_args()
if args.i is None:
print("INPUT: current directory")
else:
print("INPUT: specific directory = " + args.i)
if args.o is None:
print("OUTPUT: current directory")
else:
print("OUTPUT: specific directory = " + args.o)
if args.txt is not None:
print(".txt output")
if args.rtf is not None:
print(".rtf output")
print("[End of Main]")
if __name__ == '__main__':
MainClass.main()
C:\Users\pc\source>python argparse_test.py --txt
[Start of Main]
usage: argparse_test.py [-h] [-i I] [-o O] [--txt TXT | --rtf RTF]
argparse_test.py: error: argument --txt: expected one argument
C:\Users\pc\source>
在此源代码中,--txt
和 --rtf
不应接收任何参数,它们也应该是互斥的。
那么,我该如何解决这个问题?
编辑 (1):
my_group = my_parser.add_mutually_exclusive_group()
my_group.add_argument("--txt",help="output as .txt files",action='store_true')
my_group.add_argument("--rtf",help="output as .rtf files",action='store_true')
C:\Users\pc\source>python argparse_test.py --txt
[Start of Main]
INPUT: current directory
OUTPUT: current directory
.txt output
.rtf output
[End of Main]
C:\Users\pc\source>
编辑 (2): 测试 True
/False
给出了更好的结果:
if args.txt is True:
print(".txt output")
if args.rtf is True:
print(".rtf output")
输出:
C:\Users\pc\source>python argparse_test.py --txt
[Start of Main]
Namespace(i=None,o=None,rtf=False,txt=True)
INPUT: current directory
OUTPUT: current directory
.txt output
[End of Main]
但是同时输入--txt
和--rtf
会报错:
C:\Users\pc\source>python argparse_test.py --txt --rtf
[Start of Main]
usage: argparse_test.py [-h] [-i I] [-o O] [--txt | --rtf]
argparse_test.py: error: argument --rtf: not allowed with argument --txt
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。