【问题标题】:Run Command Line Arguments in a loop in Python在 Python 中循环运行命令行参数
【发布时间】:2020-10-13 15:10:04
【问题描述】:

我有一个从模块调用函数并使用命令行参数 (sys.argv) 的程序。我想用这些参数的不同值集多次调用这个函数。我基本上是在尝试使用循环来运行它,但它不起作用:

test_args = [[1,2,3],[4,5,6],[7,8,9]]
i = 0
while i < len(test)args)+1:
    sys.argv = test_args[i]
    module.function()
    i=i+1

我尝试了 for 循环甚至 while 循环,但迭代在第一次迭代后停止。第一次迭代虽然运行成功,但没有进行下一次迭代,即 i = i+1

有没有办法循环运行?

【问题讨论】:

    标签: python function loops command-line-arguments


    【解决方案1】:

    我希望这是你想要达到的目标。

    因为你没有提到模块中的function。我已经创建了 sum 函数作为示例。

    这里是代码

    import sys #if you directly take input from system arguments
    def addall(a):
        return sum(a)
    test_args = [[1,2,3],[4,5,6],[7,8,9]]
    for i in test_args:
        print (i, addall(i))
    

    输出:

    [1, 2, 3] 6
    [4, 5, 6] 15
    [7, 8, 9] 24
    

    【讨论】:

    • 感谢您的回复。这里的模块是另一个 python 脚本(比如 - sample.py)和该脚本中的函数(比如 - test())函数“test”不接受任何参数(如定义的那样),但使用命令行参数和解析他们使用 argparser。基本上,动态生成模块“sample.py”所需的所有参数。现在,问题是我希望 sys.argv 根据 i 的值获取多个值并循环运行,但它在运行一次后停止。
    • 我有点困惑,你在期待什么。您是否需要通过 sys.args 获取n 的输入数量?如果是,您可以在程序中获取值作为输入并附加到列表中。或者您可以采用逗号分隔或制表符分隔的值。否则,您甚至可以将文件名作为参数传递并在程序中进行处理。
    • 该函数基本上有 12 个参数。我想测试这 12 个参数的不同集合的函数。我已经附加了列表。 “test_args”是所有不同参数集的列表,或者简单地说,这就是它的外观:test_args = [[a1, b1, c1, .... l1], [a2,b2,c2, ... . l2] , ... [an, bn, cn, ... ln]]。现在,在迭代时,第一次迭代应该采用 [a1, b1, c1, .... l1] ,第二次迭代应该采用 [ a2, b2, c2, ... l2] 等等。但是我的代码现在 sys.argv 将第一次迭代正确地作为 [a1, b1, c1, .... l1] 但停在那里并且没有进一步进行。
    • 我的代码可以满足您的需求。如果它没有进入第二个循环,请尝试在顶部添加一个额外的循环(肯定是错误的方式)或正确检查你的函数(这可能是问题)
    猜你喜欢
    • 2014-10-04
    • 1970-01-01
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多