如何解决发出解析多个位置参数的问题
我肯定想念一些确实很明显的东西,但是我无法一生发现它。
import argparse
def parse_args():
parser = argparse.ArgumentParser(description="Copies selected files.")
parser.add_argument(
"-c","--checksum",type=bool,default=False
)
parser.add_argument("source")
parser.add_argument("target")
return parser.parse_args()
def main():
args = parse_args()
print(args.checksum,args.source,args.target)
main()
>python file_proc.py source1 target1
False source1 target1
到目前为止,很好。
>python file_proc.py -c source1 target1
usage: file_proc.py [-h] [-c CHECKSUM] source target
file_proc.py: error: the following arguments are required: target
现在,为什么不输出True source1 target1
?它一定就在我面前,但我需要另一双眼睛。
谢谢!
解决方法
您的编码方式基本上意味着,如果要传递-c
,则还需要在args中传递bool
。
请发表您的声明:
>python file_proc.py source1 target1
False source1 target1
可以正常工作,因为您没有通过-c
。因此,它打印了False
。
但是,当您在命令行中传递-c
时,它需要在参数中传递另一个变量。这样做:
>python file_proc.py -c d source1 target1
True source1 target1
这意味着将bool
作为参数传递,因此它显示True
。
-c
的参数声明表示,在之后的 --checksum
/ --checksum yes
中,将传入一个实际的布尔值。例如,bool
将“启用”校验和;由于True
是如何解释字符串的,除空字符串以外的 any 参数的求值为 parser.add_argument(
"-c","--checksum",action='store_true'
)
。
使用store_true
/store_false
action定义一个无参数标志,通过提及该标志可以打开/关闭。
{{1}}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。