使用输入参数从命令行运行Python函数
问题描述:
Python新手,用于使用MATLAB。使用输入参数从命令行运行Python函数
我的功能convert.py是:
def convert(a,b)
factor = 2194.2
return (a-b)*factor
如何从输入参数“a”和“B”的命令行运行呢? 我试过了:
python convert.py 32 46
但是出错了。
我曾尝试在网上找到答案,找到相关的东西,但不是问题的答案:
- Python: Run function from the command line(堆栈溢出)
- Command Line Arguments In Python(堆栈溢出)
- http://www.cyberciti.biz/faq/python-command-line-arguments-argv-example/
- http://www.saltycrane.com/blog/2007/12/how-to-pass-command-line-arguments-to/
另外,我在哪里可以找到答案mysel f以便我可以保存此论坛以获取更多不重要的问题?
答
这种东西存在一个叫做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
答
你可以这样做:
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])'
你有什么错误? – kennytm
用'sys.argv [1]'和'sys.argv [2]'代替'a'和'b',同时结帐'argparse' –
检查[this document](http://stackoverflow.com/documentation/) python/1382/parsing-command-line-arguments#t = 201608171014404401577)out。 – Selcuk