Python 2.7 argparse:如何获取 file_name 和使用单个标志的文件
Python 2.7 argparse: How to take file_name and a file using single flag
我需要使用来自用户的一个标志来获取 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是否也可以取?
提前致谢。
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('put your message here') 调用引发 argparse 错误。
我需要使用来自用户的一个标志来获取 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是否也可以取?
提前致谢。
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('put your message here') 调用引发 argparse 错误。