微信一键登录

科吉思石油论坛

搜索
查看: 3511|回复: 0
打印 上一主题 下一主题

tNavigator-通过Python命令调用tNavigator程序

[复制链接]

136

主题

205

帖子

264

积分

中级会员

Rank: 3Rank: 3

积分
264
跳转到指定楼层
楼主
发表于 2020-4-17 21:50:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
应读者留言,本文将介绍如何用Python来调用tNavigator。
如何通过dos命令来调用tNavigator可以参考微文《tNavigator-通过dos命令调用tNavigator程序》
(Tips:DOS命令与cmd其实有区别,可以说cmd是DOS的一小部分。由于此处仅涉及如何调用执行文件,达到效果即可,故未作特别说明。若想深入了解,请自行百度。)

笔者尝试了多种方式均可达到效果,本文给出两种非常简单的方式,可满足顺序调用以及批量调用

操作环境:windows 10 64位
软件要求:tNavigator的console版(常用的GUI版程序只能兼容部分命令参数)
Python IDE:Anaconda– Spyder(任意其它可调用Python的IDE均可)
--------------------------------------
方式一:使用os.system函数-顺序调用
system函数可以将字符串转化成命令在服务器上运行;其原理是每一条 system函数执行时,其会创建一个子进程在系统上执行命令行,子进程的执行结果无法影响主进程。
通俗的讲,可以认为os.system模拟了cmd环境来调用执行文件。
import os
os.system(r'E:\BlackOilDEMO\tNavigator-con.exe --server-url=http://192.168.1.139/tNavigator1/E:\BlackOilDEMO\BLACK_OIL_DEMO.DATA')
os.system(r'E:\BlackOilDEMO\tNavigator-con.exe--server-url=http://192.168.1.139/tNavigator1/E:\BlackOilDEMO\BLACK_OIL_DEMO_1.DATA')
os.system(r'E:\BlackOilDEMO\tNavigator-con.exe--server-url=http://192.168.1.139/tNavigator1/E:\BlackOilDEMO\BLACK_OIL_DEMO_2.DATA')

评价:该方式简单、实用,但是只能顺序执行,即阻塞的-程序运行到这里后要等执行的程序执行完成后才能继续向下运行。

方式二:使用ShellExecute函数-批量调用
win32api模块中的ShellExecute()函数也可以调用其它程序,稍显复杂。
ShellExecute(hwnd,op , file , params , dir , bShow )
其参数含义如下所示。
hwnd:父窗口的句柄,如果没有父窗口,则为0。
op:要进行的操作,为“open”、“print”或者为空。
file:要运行的程序,或者打开的脚本。
params:要向程序传递的参数,如果打开的为文件,则为空。
dir:程序初始化的目录。
bShow:是否显示窗口。

看下实例:
import win32process
handle =win32process.CreateProcess(r'E:\BlackOilDEMO\tNavigator-con.exe',
                                   r'--server-url=http://192.168.1.139/tNavigator1/E:\BlackOilDEMO\BLACK_OIL_DEMO.DATA',
                                    None,
                                    None,
                                    0,
                                   win32process.CREATE_NEW_CONSOLE,
                                    None,
                                    None,
                                   win32process.STARTUPINFO()               
                                    )

import win32process
handle =win32process.CreateProcess(r'E:\BlackOilDEMO\tNavigator-con.exe',
                                   r'--server-url=http://192.168.1.139/tNavigator1/ E:\BlackOilDEMO\BLACK_OIL_DEMO.DATA_1',
                                    None,
                                    None,
                                    0,
                                   win32process.CREATE_NEW_CONSOLE,
                                    None,
                                    None,
                                   win32process.STARTUPINFO()   
                                    )

评价:该方式略显复杂,但是能够同时执行多条命令,即非阻塞的。

其实还有很多种方式可以实现,如ShellExecute()、os.popen、subprocess.call()等等。鉴于上述两种方式已满足大部分客户需求,其余方式不再做演示,有兴趣的童鞋可自行Google/百度。
(Tips:os.popen()可以获取命令返回值。)
--------------------------------------
本质上,无论是通过cmd命令还是Python(或者Matlab)调用tNavigator,都是用第三方软件/平台的命令调用可执行文件。tNavigator软件本身免安装,并提供了很多命令参数来控制输入输出、硬件资源、许可授权、远程控制等,调用方式简单易行。
若想要了解如何通过Matlab实现对tNavigator的调用,可以在文末或微信公众号留言。

想要了解更多tNavigator的强大应用,请关注科吉思:
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|服务支持:DZ动力|科吉思石油技术咨询有限公司 ( 京ICP备15057753号

GMT+8, 2024-4-25 09:20 , Processed in 0.906250 second(s), 33 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表