2016-12-16 10 views
0

Я хочу вызывать скрипты Jython из командной строки, p.e. $ /Applications/Fiji.app/Contents/MacOS/ImageJ-macosx --headless little_jython_script.pyЗапуск сценария Jython из терминала с параметром

Я знаю о возможности Python (и, следовательно, Jython), чтобы принять параметры по

import sys 
params = sys.argv[1:] 

и затем вызвать скрипт с чем-то вроде $ /Applications/Fiji.app/Contents/MacOS/ImageJ-macosx --headless jython_script_with_params.py param1 param2 param3.

Однако, согласно к ImageJ странице http://imagej.net/Script_parameters также можно закодировать использование параметров в Jython аналогично примеру Greeting.py с этого сайта

# @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 + "!" 

Рассматриваются вопросы: Как я могу указать параметр name в командной строке $/Applications/Fiji.app/Contents/MacOS/ImageJ-macosx --headless Helloworld.py?

ответ

0

Способ доступа к параметрам зависит от вызывающей команды, где разница составляет дополнительные флаги --ij2 и --run по методу Jython. Либо sys.argv или # @String и т.д. работы, но не оба одновременно

1. Классический способ Python с sys.argv

$/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 пар разделенных запятой. Работают как одиночные, так и двойные кавычки. Они могут быть опущены, когда присутствует только один параметр. Для строковых параметров обязательно вставляйте их в другой тип кавычек или опускайте кавычки, когда строка является чисто буквенно-цифровой, например $/Applications/Fiji.app/Contents/MacOS/ImageJ-macosx --ij2 --headless --run JythonScript_3.py 'stringparam1="string with ',' and space ", stringparam2=abc123'