从命令行运行函数并将参数传递给function

时间:2014-02-21 12:46:35

标签: python

我正在使用类似的方法从我的shell脚本调用python函数:

python -c 'import foo; print foo.hello()'

但我不知道在这种情况下我如何将参数传递给python脚本,也可以从命令行调用带参数的函数?

3 个答案:

答案 0 :(得分:7)

python -c 'import foo, sys; print foo.hello(); print(sys.argv[1])' "This is a test"

echo "Wham" | python -c 'print(raw_input(""));'

还有argparse(py3链接)可用于捕获参数,例如-c也可以在sys.argv[0]找到。

第二个图书馆确实存在但是被推文出来,称为getopt.getopt

答案 1 :(得分:4)

您不希望在shell脚本中执行此操作。

试试这个。创建一个名为“hello.py”的文件,并将以下代码放在该文件中(假设您使用的是unix系统):

#!/usr/bin/env python

print "Hello World"

并在你的shell脚本中写下一些内容

#!/bin/sh
python hello.py

你应该在终端看到Hello World

这就是你应该如何在shell / bash中调用脚本。

主要问题:你如何传递论据?

举个简单的例子:

#!/usr/bin/env python
import sys

def hello(name):
    print "Hello, " + name

if __name__ == "__main__":
    if len(sys.argv) > 1:
        hello(sys.argv[1])
    else:
        raise SystemExit("usage:  python hello.py <name>")

我们预计论证的len至少为两个。与shell编程一样,第一个(索引0)始终是文件名。

现在修改shell脚本以包含第二个参数(名称),看看会发生什么。

还没有测试我的代码,但从概念上来说,你应该如何去做

编辑:

如果您只有一行或两个简单的python代码,请确保-c正常工作并且很整洁。但是如果您需要更复杂的逻辑,请将代码放入模块(.py文件)中。

答案 2 :(得分:-1)

您需要创建一个.py文件。 在你用这种方式打电话之后:

python file.py argv1 argv2

在你的文件中,你有sys.argv列表,谁给你argvs列表。

相关问题