我的要求:
现在,当我使用此命令运行我的python应用程序时
python main.py -d listhere/users.txt
程序将运行并将结果文件保存为预定义名称,例如 reports.txt
现在我想添加此功能,以允许用户选择放置文件名的内容以及保存位置
python main.py -d -o output/newfilname -i listhere/users.txt
一切都是一样但我想要传递另一个参数-o来确定要保存的filpath和名称。我该怎么做。处理或组合多个选项的最佳方法是什么。
我试过了
parser = argparse.ArgumentParser(description = "CHECK-ACCESS REPORTING.")
parser.add_argument('--user','-d', nargs='?')
parser.add_argument('--output','-d -o', nargs='?')
parser.add_argument('--input','-i', nargs='?')
args = parser.parse_args(sys.argv[1:])
if args.output and args.input:
#operation that involves output filename too
elif args.user and not args.input:
#default operation only
else:
#notset
尝试以这种方式解决问题时出现此错误
错误:
report.py:错误:无法识别的参数:-o listhere / users.txt
答案 0 :(得分:2)
parser.add_argument('-d', nargs='?', default='DEF', const='CONST')
已标记的选项有3种方式
foo.py -d value # => args.d == 'value'
foo.py -d # => args.d == 'CONST'
foo.py # => args.d == 'DEF'
命令行:
-d -o
https://docs.python.org/3/library/argparse.html#const
利用这一点,你不应该需要像这个错误的const
旗帜那样的东西。
如果您不使用parser.add_argument('--user','-u', nargs='?', const='CONST', default='default_user')
parser.add_argument('--output','-o', default='default_outfile')
parser.add_argument('--input','-i', default='default_infile')
参数,请不要使用'?'
SpeechResult
答案 1 :(得分:0)
你想要这样的东西:
import argparse
def main():
parser = argparse.ArgumentParser(
description='Check-Access Reporting.',
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
)
parser.add_argument(
'-d',
dest='discrepancy',
action='store_true',
help='Generate discrepancy report.',
)
parser.add_argument(
'--input',
'-i',
default='users.txt',
help='Input file for the report.',
)
parser.add_argument(
'--output',
'-o',
default='reports.txt',
help='Output file for the report.',
)
args = parser.parse_args()
if args.discrepancy:
print('Report type: {}'.format(args.report_type))
print('Input file: {}'.format(args.input))
print('Output file: {}'.format(args.output))
else:
print('Report type is not specified.')
if __name__ == '__main__':
main()
选项--help
的结果:
usage: ptest_047.py [-h] [-d] [--input INPUT] [--output OUTPUT]
Check-Access Reporting.
optional arguments:
-h, --help show this help message and exit
-d generate discrepancy report (default: False)
--input INPUT, -i INPUT
input file for the report (default: users.txt)
--output OUTPUT, -o OUTPUT
output file for the report (default: reports.txt)
没有任何选项(或缺少选项-d
):
Report type is not specified.
使用选项-d
:
Report type: discrepancy
Input file: users.txt
Output file: reports.txt
使用-d --input input.txt --output output.txt
:
Report type: discrepancy
Input file: input.txt
Output file: output.txt