python - 使用 argparse 让 python 文件根据输入参数返回不同的值
问题描述
假设我有一个功能f1()
def f1(input1, input2):
# does some magic
return p1, p2
if __name__ == "__main__":
parser = ArgumentParser(description='Help function description')
parser.add_argument('t1', help='Token')
parser.add_argument('t2', help='Another token')
args = parser.parse_args()
p1, p2 = f1(args.t1, args.t2)
假设这个文件名为 street.py。当参数 arg1 是输入时,我想使用同一个文件返回 p1,当参数 arg2 是输入时,我想返回 p2。文件外:
variable1 = (python3 ../street.py t1 t2 -arg1)
variable2 = (python3 ../street.py t1 t2 -arg2)
我对文档中的 argparse 参数样式有点困惑,最简单的方法是什么?
解决方案
TL;博士
像这样在终端中拨打电话(linux)
variable=$(python3 streep.py t1 'foo' t2 'bar')
您应该将每个参数及其各自的值关联t1
起来t2
。也只返回一个f1
你print
想要的值stdout
你应该考虑你想要的行为是什么。如果要使用f1
then 的输出,请在其参数中明确说明什么是强制性的,什么是可选的输入。还要考虑你想要的输出是什么,因为这是一个传递值的脚本,stdout
你只有一行到print
.
def f1(input1, input2):
# does some magic
return p1 or p2
print()
然后只需使用 python语句将结果打印到标准输出
基于您的代码的示例可能如下所示
from argparse import ArgumentParser
import sys
def f1(input1, input2):
# does some magic
return input1 or input2
if __name__ == "__main__":
parser = ArgumentParser(description='Help function description')
parser.add_argument('--t1', help='Token')
parser.add_argument('--t2', help='Another token')
args = parser.parse_args()
try:
result = f1(args.t1, args.t2)
print(result)
except Exception as e:
print(e, file=sys.stderr)
exit(1)
然后我可以将此脚本用作
variable=$(python3 streep.py --t2 'bar')