首页 > 解决方案 > 使用 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 参数样式有点困惑,最简单的方法是什么?

标签: pythonreturn-valueargparse

解决方案


TL;博士

像这样在终端中拨打电话(linux)

variable=$(python3 streep.py t1 'foo' t2 'bar')

您应该将每个参数及其各自的值关联t1起来t2。也只返回一个f1print想要的值stdout


你应该考虑你想要的行为是什么。如果要使用f1then 的输出,请在其参数中明确说明什么是强制性的,什么是可选的输入。还要考虑你想要的输出是什么,因为这是一个传递值的脚本,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')

推荐阅读