aardio中调用python的方法有两种,py3 和 process.python模块
- py3模块:如果经常要拿到python返回的值或从aardio中传数据给python去处理,aardio和python的交互比较多的话,可以考虑使用py3模块,缺点是:py3模块使用起来比较麻烦些,尤其是在异步多线程操作的话,中间需要学习的东西比较绕。
- process.python模块:如果aardio和python的交互不多(比如aardio负责做界面,python负责做爬虫或负责下载文件之类程序),只需后台由python负责完成相关工作的,用process.python来处理是非常方便的,而且使用logRespone可以完整回传Python中print或loggin打印出的信息给aardio的界面控件。 缺点:一般直接指定执行.py脚本,中间不好做交互,参数传递一般在execfile()命令执行时传递给python脚本,然后待脚本执行完成。
关于process.python如何使用?
// process.python.execfile 实际上就是执行:"../py/python3.8.exe xxx.py"
// python文件中用sys.args来接收参数
import process.python
pyMain = process.python.execfile("\py_source\test_arrdio_process_python.py","ar_parm1 ar_parm2")
// execfile(@code,@2)
// 参数 @code:py文件,此方法可以在py文件中使用获取文件路径的方法或函数,但不能在文件前用$将文件加载为资源文件
// 参数 @2:可以用一个字符串参数指定多个启动参数,空格分隔多参数
// 和 exec(@code, @2)的区别:exec()可指定py文件或$开头的资源文件,但注意这是内存加载Py代码,Py并不知道文件路径
// 如:var pyMain = process.python.exec($"\py_source\pyMain.py")
// 和 command(@code, @2)的区别: command()@code参数支持使用代码开始为aardio模板标记的字符串,启用模板语法: chm://the%20language/template_syntax.html 。
// 和 test(@code, @2)的区别:test()仅立即执行代码,成功返回 true,否则返回 null 或 false。
//var pyMain = process.python.test("\py_source\pyMain.py","parm1 parm2")
// process.python.execfile 及以上方法均可以创建 Python 进程,当前进程退出时 Python 会自动退出。返回进程管道( process.popen )对象。
// 这个过程是异步的,也就是说如