从命令提示符处将变量传递给python脚本运行

时间:2019-04-02 18:03:06

标签: python python-3.x python-2.7 subprocess

所以我知道从命令提示符运行脚本的命令是:

python script.py var1 var2

,甚至使用软件包subprocess

import subprocess
subprocess(python script.py var1 var2)

但是,如果var1和/或var2是一个列表,那么我该如何实现。现在,如果我们传入var1 as a list: ["test", "test"],那么当我们使用sys.argv[element_number]捕获它时,列表中的元素似乎已被逗号分隔。换句话说,我想传递整个列表,以便可以将其捕获为我正在调用的脚本中的变量。

2 个答案:

答案 0 :(得分:0)

您可以使用标准库中的argparse模块。 Stackoverflow上有许多相关的questions and answers

答案 1 :(得分:0)

我想当您在命令行参数中将列表作为字符串传递时。 通过sys.argv[index]捕获它时,您会遇到问题,因为它具有逗号,因为它将是字符串类型。

您可以将变量解析到所需列表。

import sys

def main(*argv, **kwargs):
    if len(sys.argv) < 2:
        print 'Atleast one command line argument required'

    first_arg = sys.argv[1]
    # convert it to list
    first_arg_list = list(first_arg)
    # filter it according to requirement 
    first_arg_list_filtered = [ elem for elem in first_arg_list if elem not in '[],' ]

if __name__ == '__main__':
    main()

希望有帮助。