我的要求:
现在,当我使用此命令运行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
带nargs='?'
标记的选项以3种方式起作用
parser.add_argument('-d', nargs='?', default='DEF', const='CONST')
命令行:
foo.py -d value # => args.d == 'value'
foo.py -d # => args.d == 'CONST'
foo.py # => args.d == 'DEF'
https://docs.python.org/3/library/argparse.html#const
利用这一点,您不需要像该错误-d -o
标志这样的东西。
如果不使用该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')
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句