Python - 在命令行中使用参数运行函数

时间:2016-07-12 12:01:12

标签: python command-line

是否可以在命令行中运行带有参数的python脚本,如下所示:

./hello(var=True)

或者必须这样做:

python -c "from hello import *;hello(var=True)"

第一种方式更短更简单。

2 个答案:

答案 0 :(得分:0)

大多数shell使用括号进行分组或子shell。所以你不能从普通的shell调用任何像command(arg)这样的命令......但是你可以写一个带参数的python脚本(./hello.py)。

import optparse
parser = optparse.OptionParser()
parser.add_option('-f', dest="f", action="store_true", default=False)
options, remainder = parser.parse_args()
print ("Flag={}".format(options.f)) 

并使用python hello.py -f

进行调用

答案 1 :(得分:0)

REPL shell开始,{p> ./hello(var=True)是不可能的。在某些情况下,在当前的shell会话中使用python函数可能很有用。这里有一个解决方法,可以在shell环境中使用python函数。

# python-tools.sh

#!/usr/bin/env bash
set -a # make all available export all variable)

function hello(){
    cd "/app/python/commands"
    python "test.py" $@
}

python脚本的内容

#! /usr/bin/env python
# /app/python/commands/test.py script

import sys


def test(*args):
    print(args)


if __name__ == '__main__':

    if sys.argv[1] in globals().keys():
        print(sys.argv[1])
        globals()[sys.argv[1]](sys.argv[2:])
    else:
        print("%s Not known function" % sys.argv[1])

然后来源python-tools.sh

source python-tools.sh

hello功能可用后

$ hello test arg2 arg2
test
(['arg2', 'arg2'],)