2016-08-17 149 views
-2

Python新手,用于使用MATLAB。使用输入参数从命令行运行Python函数

我的功能convert.py是:

def convert(a,b) 
    factor = 2194.2 
    return (a-b)*factor 

如何从输入参数“a”和“B”的命令行运行呢? 我试过了:

python convert.py 32 46 

但是出错了。

我曾尝试在网上找到答案,找到相关的东西,但不是问题的答案:

  1. Python: Run function from the command line(堆栈溢出)
  2. Command Line Arguments In Python(堆栈溢出)
  3. http://www.cyberciti.biz/faq/python-command-line-arguments-argv-example/
  4. http://www.saltycrane.com/blog/2007/12/how-to-pass-command-line-arguments-to/

另外,我在哪里可以找到答案mysel f以便我可以保存此论坛以获取更多不重要的问题?

+0

你有什么错误? – kennytm

+1

用'sys.argv [1]'和'sys.argv [2]'代替'a'和'b',同时结帐'argparse' –

+0

检查[this document](http://stackoverflow.com/documentation/) python/1382/parsing-command-line-arguments#t = 201608171014404401577)out。 – Selcuk

回答

-1

这种东西存在一个叫做argparse的Python模块,它允许你围绕命令行标志做一些真正奇妙的事情。你并不需要这么做 - 你在命令行中只有两个数字。这可以很天真地处理。

Python允许您通过名为sys.argv的数组直接访问命令行参数 - 首先需要import sys。该数组中的第一个元素始终是程序名称,但第二个和第三个元素将是您在i.e. sys.argv[1]sys.argv[2]中传递的数字。对于一个更完整的例子:

if len(sys.argv) < 3: 
    print 'Didnt supply to numbers' 
a = int(sys.argv[1]) 
b = int(sys.argv[2]) 

当然还需要一些错误检查各地确保他们在实际工作整数/浮点。

的周围sys.argv中,如果你有兴趣here

是完整的,我们可以举一个例子argparse以及额外的阅读了一下:

import argparse 

parser = argparse.ArgumentParser(description='') 
parser.add_argument('numbers', type=float, nargs=2, 
          help='Things to perform actions on') 
args = parser.parse_args() 

a = args.numbers[0] 
b = args.numbers[1] 

print a, b 
0

你可以这样做:

import sys 
def convert(a,b): 
    factor = 2194.2 
    return (a-b)*factor 
print(convert(int(sys.argv[1]), int(sys.argv[2]))) 

如果这就是所有应该做的脚本,你不必定义一个函数:

import sys 
factor = 2194.2 
print((int(sys.argv[1]), int(sys.argv[2])*factor) 

如果你想改变你的文件(不过你具备的功能definiton后加冒号),你可以按照你的第一个链接的方法:

python -c 'import convert, sys; print convert.convert(int(sys.argv[1]), int(sys.argv[2])'