在命令行中运行 python3 脚本

艾莉

我在 python 中编写了一个函数,它接受2 lists(具有相同的长度)并返回另一个包含 2 个元素的列表。该函数运行良好,但我试图在command line. 为此,我想argparse在 python 中使用模块。我使用以下命令在 python3 中编写了以下脚本:

python3 text.py a b results

该脚本应将 3 个参数 2 个列表作为输入,一个列表作为输出。这是脚本:

def fun(a, b):
    a_is_greater = 0
    b_is_greater = 0
    for element_a, element_b in zip(a, b):
        if element_a > element_b:
            a_is_greater += 1
        elif element_a < element_b:
            b_is_greater += 1
    return [a_is_greater, b_is_greater]


def main():
    import argparse
    ap = argparse.ArgumentParser(description="")
    ap.add_argument('--list-type', type=list)
    ap.add_argument('--list-type', type=list)
    ap.add_argument('-o', '--outlist', required=True)

    args = ap.parse_args()

    results = fun(a, b)
    return results

if __name__ == "__main__":
    from signal import signal, SIGPIPE, SIG_DFL
    signal(SIGPIPE, SIG_DFL)

    try:
        main()
    except IOError as e:
        if e.errno != 32:
            raise
    except KeyboardInterrupt as e:
        pass

你知道怎么修吗?我已经尝试过这两个列表:a = [4, 5, 2]b = [3, 5, 4]. 脚本中的 fun 函数非常适合这两个输入。

纪尧姆·费

这是否更好?

python3 text.py --list1 [4,5,2] --list2 [3,5,4] -o result # [1, 1]

def main():
    import argparse

    ap = argparse.ArgumentParser(description="")
    ap.add_argument('--list1', type=list)
    ap.add_argument('--list2', type=list)
    ap.add_argument('-o', '--outlist', required=True)
    args = ap.parse_args()

    results = fun(args.list1, args.list2)
    print(results)
    return results

代码 :

def fun(a, b):
    a_is_greater = 0
    b_is_greater = 0
    for element_a, element_b in zip(a, b):
        if element_a > element_b:
            a_is_greater += 1
        elif element_a < element_b:
            b_is_greater += 1
    return [a_is_greater, b_is_greater]


def main():
    import argparse

    ap = argparse.ArgumentParser(description="")
    ap.add_argument('--list1', type=list)
    ap.add_argument('--list2', type=list)
    ap.add_argument('-o', '--outlist', required=True)
    args = ap.parse_args()

    results = fun(args.list1, args.list2)
    print(results)
    return results

if __name__ == "__main__":
    from signal import signal, SIGPIPE, SIG_DFL
    signal(SIGPIPE, SIG_DFL)

    try:
        main()
    except IOError as e:
        if e.errno != 32:
            raise
    except KeyboardInterrupt as e:
        pass

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章