代码如下:
from win32com.client import DispatchBaseClass
from win32com import client
#获得com组件对象
com_instance = client.DispatchEx('{DBA56B2C-C868-4BD2-94CA-5101709CA61E}')
#初始化com组件对象
com_instance.yh_interface_init('','')
#指定格式填写好文件路径,该com组件使用xml交互
jysr_xml='<?xml version="1.0" encoding="GBK" standalone="yes" ?><input><prm_outputfile>C:\YHTEST\dmxxxz.txt</prm_outputfile></input>'
#调用60号功能,参数为jysr_xml,其余参数为空即可
result= com_instance.yh_interface_call('60',jysr_xml,'','','','','')
#看看结果如何
print result
#显示:(u'', u'', u'<?xml version="1.0" encoding="GBK" standalone="yes" ?><output></output>', 1, u'')
#最后第二个是成功标志“1”,最后是异常内容,为空
关于这段代码的故事是:
我用pywin32调用第三方com组件,组件中有一个方法是将返回数据写入指定路径txt文件,执行该方法,无报错,组件本身的标记也显示调用成功,指定文件也生成了,而且从文件生成到结束有一分钟多,感觉像是在写数据,。。。。。。。。但是!!!程序结束了,那个文件竟然是空的。。。空的。。。。0kb....0kb!!!
原来常见的Python写入文件有问题大多是没写close,但我这次碰到的是com组件自己写入文件,我也无处获得它的文件对象,我已经为了这个问题郁闷半天了
,Python中有一个函数repe()可以解决,它的参数是object,返回值是string,所以我们借助它就可以将exception转换成string,再写入到字符串中就ok啦