Я написал быстрый маленький скрипт на Python, который можно вызывать из командной строки bash. Он принимает имя модуля, класса и метода, который вы хотите вызвать, и параметры, которые вы хотите передать. Я назвал его PyRun, отключил расширение .py и сделал его исполняемым с помощью chmod + x PyRun, чтобы я мог просто быстро вызвать его следующим образом:
./PyRun PyTest.ClassName.Method1 Param1
Сохраните это в файле с именем PyRun
#!/usr/bin/env python
#make executable in bash chmod +x PyRun
import sys
import inspect
import importlib
import os
if __name__ == "__main__":
cmd_folder = os.path.realpath(os.path.abspath(os.path.split(inspect.getfile( inspect.currentframe() ))[0]))
if cmd_folder not in sys.path:
sys.path.insert(0, cmd_folder)
# get the second argument from the command line
methodname = sys.argv[1]
# split this into module, class and function name
modulename, classname, funcname = methodname.split(".")
# get pointers to the objects based on the string names
themodule = importlib.import_module(modulename)
theclass = getattr(themodule, classname)
thefunc = getattr(theclass, funcname)
# pass all the parameters from the third until the end of
# what the function needs & ignore the rest
args = inspect.getargspec(thefunc)
z = len(args[0]) + 2
params=sys.argv[2:z]
thefunc(*params)
Вот пример модуля, чтобы показать, как он работает. Это сохраняется в файле с именем PyTest.py:
class SomeClass:
@staticmethod
def First():
print "First"
@staticmethod
def Second(x):
print(x)
# for x1 in x:
# print x1
@staticmethod
def Third(x, y):
print x
print y
class OtherClass:
@staticmethod
def Uno():
print("Uno")
Попробуйте запустить эти примеры:
./PyRun PyTest.SomeClass.First
./PyRun PyTest.SomeClass.Second Hello
./PyRun PyTest.SomeClass.Third Hello World
./PyRun PyTest.OtherClass.Uno
./PyRun PyTest.SomeClass.Second "Hello"
./PyRun PyTest.SomeClass.Second \(Hello, World\)
Обратите внимание на последний пример экранирования скобок для передачи кортежа в качестве единственного параметра для метода Second.
Если вы передадите слишком мало параметров для того, что нужно методу, вы получите ошибку. Если вы передаете слишком много, он игнорирует дополнительные. Модуль должен находиться в текущей рабочей папке, поставить PyRun можно в любом месте вашего пути.