2016-12-16 72 views
0

我想從命令行p.e中調用Jython腳本。 $ /Applications/Fiji.app/Contents/MacOS/ImageJ-macosx --headless little_jython_script.py從終端運行Jython腳本,參數爲

我知道通過

import sys 
params = sys.argv[1:] 

,然後調用的東西,如 $ /Applications/Fiji.app/Contents/MacOS/ImageJ-macosx --headless jython_script_with_params.py param1 param2 param3腳本拍攝參數Python的(因此Jython的)能力。

然而,根據該網頁的ImageJ它http://imagej.net/Script_parameters也可以在代碼的Jython從該網站

# @String name 

# A Jython script with parameters. 
# It is the duty of the scripting framework to harvest 
# the 'name' parameter from the user, and then display 
# the 'greeting' output parameter, based on its type. 

print "Hello, " + name + "!" 

的問題是類似的Greeting.py例如使用參數:我如何指定在命令行調用參數name$/Applications/Fiji.app/Contents/MacOS/ImageJ-macosx --headless Helloworld.py

回答

0

方式參數可用取決於調用命令,其中差異是Jython方式中的附加標誌--ij2--run。無論是sys.argv# @String等方面的工作,但兩者不能同時使用sys.argv中

1.經典的Python的方式

$/Applications/Fiji.app/Contents/MacOS/ImageJ-macosx --headless JythonScript.py param1 param2

收成經典蟒蛇方式爲JythonScript.py參數與sys.argv,即

# @String param1  ### Does NOT work 

import sys 
program_name = sys.argv[0] 
paramvalue1 = sys.argv[1] 
paramvalue2 = sys.argv[2] 

2. Jython的與#@String等具體方式

$/Applications/Fiji.app/Contents/MacOS/ImageJ-macosx --ij2 --headless --run JythonScript_2.py 'param1=value, param2=value'

發生在Jython的方式

# @String param1  
# @Long param2 

### See http://imagej.net/Script_parameters#Parameter_types 
### for a complete list of parameter types 

import sys 
check = sys.argv 
#here check is a length 1 list containing en empty string: check ==[''] 

注意圍繞兩個逗號分隔param=value雙報價參數。單引號和雙引號都可以工作。只有1個參數存在時,它們可以省略。對於字符串參數,請確保將它們放入其他類型的引號中,或者在字符串純字母數字時省略引號,如 $/Applications/Fiji.app/Contents/MacOS/ImageJ-macosx --ij2 --headless --run JythonScript_3.py 'stringparam1="string with ',' and space ", stringparam2=abc123'