python argparse为相同的参数创建组分布

时间:2019-05-28 10:37:35

标签: python argparse

我正在尝试创建一个脚本,其中有4个输入变量,它们之间可以有几种组合以生成输出。例如,我有:U,nu,Dh,Re。它们由方程Re = U * D / nu关联。我想要的是创建组,其中等式的右边是必选的,而左边的一个要根据数据输入进行计算。

现在我有这段代码正在工作,但是我不喜欢我发现将所有输入设为可选并使用if语句处理它的方式:

def get_Re (U, D, nu):
    return (U*D/nu)

def get_nu (U, D, Re):
    return (U*D/Re)

def get_U (D, Re, nu):
    return (Re*nu/D)

if __name__ == "__main__":

    parser = argparse.ArgumentParser()

    parser.add_argument('-U',  type=float, help='Fluid Speed [m/s]')
    parser.add_argument('-nu', type=float, help='Fluid kinematic viscosity [m^2/s]')
    parser.add_argument('-Dh', type=float, help='Hydraulic diameter [m]')
    parser.add_argument('-Re', type=float, help="Reynold's number")
    args = parser.parse_args()

    if args.U and args.Dh and args.nu:
        Re = get_Re(args.U, args.Dh, args.nu)
    elif args.Re:
        Re = args.Re

    if args.U and args.Dh and args.Re:
        nu = get_nu(args.U, args.Dh, args.Re)
    elif args.nu:
        nu = args.nu

    if args.Dh and args.Re and args.nu:
        U = get_U(args.Dh, args.Re, args.nu)
    elif args.U:
        U = args.U

0 个答案:

没有答案