我需要使用来自用户的一个标记来获取 file_name 和 ssh_key_file 。任何帮助赞赏。
用户输入应如下所示:
python xx.py --file ssh_key_file.pub file_name
出于某种原因,我必须使用互斥组
示例代码如下所示:
ap = argparse.ArgumentParser()`
xap = ap.add_mutually_exclusive_group()`
xap.add_argument('--file',
dest='exp_kp',
nargs=2,
type=argparse.FileType('rb'),
help='Key file and key name')`
是否可以在上面的--file
中使用file_name?
提前致谢。
答案 0 :(得分:0)
ap = argparse.ArgumentParser()
您是否有其他参数可以加入此群组。它只对一个没用(即使它有nargs = 2)
xap = ap.add_mutually_exclusive_group()
如上所述,这将把两个参数都视为文件名并尝试打开它们。 type
适用于两个参数,而不仅仅是一个参数。
xap.add_argument('--file',
dest='exp_kp',
nargs=2,
type=argparse.FileType('rb'),
help='Key file and key name')
FileType
只是方便type
。它尝试打开文件,并在出现问题(并退出)时引发argparse错误。缺点是关闭打开的文件现在是您的责任。您不能在首选with
上下文中使用它。它唯一真正的优点是argparse错误。
xap.add_argument('--file',
dest='exp_kp',
nargs=2,
metavar=('FILE','KEY'),
help='Key file and key name')
此表单将接受两个字符串,您可以根据需要进行处理,例如
with open(args.exp_kp[0],'rb') as f:
lines = f.readlines()
for l in lines:
if args.exp_kp[1] in l:
print(l)
如果在打开此文件时出现问题,您仍然可以使用`parser.error('将此消息放在此处')调用引发argparse错误。