【发布时间】:2017-11-28 11:01:47
【问题描述】:
我的要求:
现在当我使用这个命令运行我的 python 应用程序时
python main.py -d listhere/users.txt
程序将运行并将结果文件保存为预定义的名称,例如 reports.txt
现在我想添加此功能,以允许用户选择放置文件名的内容以及保存位置
python main.py -d -o output/newfilname -i listhere/users.txt
一切都是一样的,但我希望传递另一个参数 -o 来确定要保存的文件路径和名称。我该怎么做。处理或组合多个选项的最佳方式是什么。
我试过了
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
【问题讨论】:
-
您不能将更多
-选项附加到另一个-选项,不,-d -o在此处不是有效的选项名称。为什么不只使用-o选项来指定输出名称? -
去掉 -d 就可以了
-
我这样做的原因是,如果我在 -d 之后不传递一些值,它将无法工作。如何使 -d 仅作为没有值的参数。尝试将 default='' 附加到 -d 但不起作用
-
如果我用这个参数打印 arg 的值,我什么也得不到
python report.py -d -o listhere/users.txt -i list/here.txt -
旧的
-d users.txt和新的-i users.txt有什么区别?选项-d的目的是什么?
标签: python arguments command-line-arguments argparse