【问题标题】:Running a function that prompts from command line运行从命令行提示的函数
【发布时间】:2013-07-29 15:04:48
【问题描述】:

我有一个用 .py 编写的文件,需要 6 个输入。

我正在寻找是否可以有一个类似的班轮:

python myprog.py(1,2,1,1,2,4) 

非常感谢各位。

【问题讨论】:

  • 我很困惑,您能提供更多信息吗?
  • 我有一个代码可以对这些数字进行一些 numpy 工作。它的提示是这样的:What is your 1st coordinate:What is your 2nd coordinate:我想要一种在命令行调用程序时简单地输入数字的方法。

标签: python unix input prompt


【解决方案1】:

您可以通过sys.argv 列表将参数传递给您的python 程序。它们作为字符串传入,类似于Cargc,argv 约定。

壳牌:

$ python myprog.py 1 2 1 1 2 4

myprog.py:

import sys
print [int(x) for x in sys.argv[1:]]

如您所见,我们正在使用sys.argv 除了的所有成员。第一个成员,如C 中的argv[0],是程序名称。

如果你已经在你的 python 程序中定义了一些函数,你可以将它添加到文件的底部:

if __name__ == '__main__':
    MyFunction([int(x) for x in sys.argv[1:]])

作为替代方案,如果您不想修改您的 python 程序,并且它已经从标准输入流中读取其输入,您可以使用 shell 编程:

echo 1 2 1 1 2 4 | python myprog.py 

或者,取决于您的程序如何读取其输入:

$  python myprog.py << woof
> 1
> 2
> 1
> 1
> 2
> 4
> woof

【讨论】:

    【解决方案2】:

    在 myprog.py 中,添加如下代码:

    import sys
    myparams = [int(i) for i in sys.argv[1:]]
    myFunc(*myparams)
    

    现在,您应该可以从命令行执行此操作了:

    python myprog.py 1 2 1 1 2 4
    

    【讨论】:

    • 这对我不起作用。我的代码中没有定义任何函数
    • @NilesBernoulli:函数调用只是一个示例,表明您可以对数字列表做任何您喜欢的事情。它不一定是函数调用。此外,一旦您阅读了这些数字,您的问题就不是很清楚了。因此,我无法根据您的需求为您提供更具体的答案。但是,导致函数调用的所有代码仍然有效
    • 抱歉这么晚才回复。但这确实为我做了。对此,我真的非常感激!如果可以的话,我会支持你,但堆栈说我太新手了。
    • @NilesBernoulli:没有汗水!如果对您有用,请考虑接受答案(通过单击复选标记)。
    猜你喜欢
    • 2013-12-16
    • 2011-04-28
    • 2013-05-10
    • 1970-01-01
    • 2010-11-30
    • 2021-10-22
    相关资源
    最近更新 更多