2013-08-28 48 views
-3

我有几个关于Java来Python集成如何使Python脚本特定函数的调用命令行

我有一个python脚本,它有2种或更多的功能的问题。

1)如何从命令行调用python脚本中的特定函数。

2)如何从传递命令行参数的方法在python脚本的功能之一

+1

为什么不直接创建一个调用相关函数并使用该脚本的新脚本? – arshajii

+2

您是否使用'python -c“导入了某些东西;某些(..)”' – Greg

回答

2

可以argparse使用,如:

if __name__ == '__main__': 
    import argparse 
    parser= argparse.ArgumentParser(description= 'test of parameters') 
    parser.add_argument('-v', action= 'store_true', help= 'option one.') 
    parser.add_argument('-p', dest= 'port', default=5, help= 'port number') 
    parser.add_argument('command', default= None, nargs= '?', 
        choices= ['auto', 'erase'], help= 'command to be executed') 

    args= parser.parse_args() 

    if args.command == 'auto': 
     func1(args.port, args.v) 

    elif args.command == 'erase': 
     otherfunc(args.port) 

检查here可用的所有选项。

然后调用命令行代码:

mycode.py auto -p 12 

mycode.py erase -v -p 2 
0

另一种方法使用argparse对皮肤的猫:

import argparse 

def func1(param1): 
    print 'inside func1' 
    print param1 

def func2(param2): 
    print 'inside func2' 
    print param2 

def main(param): 
    print 'inside main' 
    func1(param) 
    func2(param) 

parser = argparse.ArgumentParser(description="Perform some action.") 

subparser = parser.add_subparsers(help="Run just one function.") 

func1_parser = subparser.add_parser('func1', help="Run Function 1.") 
func1_parser.add_argument('func1_param', type=func1, 
          help="Parameter for function 1") 

func2_parser = subparser.add_parser('func2', help="Run Function 2.") 
func2_parser.add_argument('func2_param', type=func2, 
          help='Parameter for Function 2') 

main_parser = subparser.add_parser('main', help="Run the Main Function.") 
main_parser.add_argument('param', type=main, 
         help="Run main function with value of -e.") 

args = parser.parse_args() 

这可以从被称为像这样的命令行:

bash-4.1$ ./test.py -h 
usage: test.py [-h] {func2,func1,main} ... 

Perform some action. 

positional arguments: 
    {func2,func1,main} Run just one function. 
    func1    Run Function 1. 
    func2    Run Function 2. 
    main    Run the Main Function. 

optional arguments: 
    -h, --help   show this help message and exit 

bash-4.1$ ./test.py main foo 
inside main 
inside func1 
foo 
inside func2 
foo 

bash-4.1$ ./test.py func1 foo 
inside func1 
foo 

bash-4.1$ ./test.py func2 foo 
inside func2 
foo 
相关问题