2016-08-17 241 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])'