现在的位置: 首页 > 综合 > 正文

利用subprocess模块调用外部程序

2013年01月18日 ⁄ 综合 ⁄ 共 763字 ⁄ 字号 评论关闭

      


python
程序中,有可能会需要运行外部的程序,
python

subprocess
模块就是用来做这个事的。
Subprocess
模块旨在替代原来较老的
os.system,os.spawn*,
os.popen*

等模块。

      

现在想要的一个功能是自动运行一批程序,然后将这一批程序运行过程中记录的调试信息统一放在一个目录下,实行半自动的测试,运行完成后,只需要在指定的特定目录下查看所有程序的运行结果即可。因为每个程序都在不同的目录,如果要靠人手工一个一个地去执行,还真有点麻烦。这个时候,
python
及其附带的丰富的库就派上用场了。

      

本来以为
python
中会有
timer,
没想到没有,只在
thread.timer
中有。后面找了下资料,发现有小伙已经弄出来了。基本上不用修改能达到要求。




只是现在还有一个疑问,如果是如上的
notepad
程序则可以运行一段时间后关闭,而如果改成
write.exe
(即写字板),则不能用了,
TerminiateProcess
的时候出错,暂时未找到原因。

      

除此之外,还需要把结果拷贝到特定的目录中,这些就只涉及一些
string
的操作及
shutil
中的内容了。这部分就不写了。

调试经验:现在变得只喜欢用
print
了,发现除了
python
在运行时会检定语法再加上
emacs
的高亮,基本上出错几率比较少,剩下的就是逻辑错了,而逻辑错通过
print
来输出结果查看也已经足够了。这一点甚至现在在用
C++
写程序的时候也就用这个了,因为写图形程序好多东西转瞬即逝,如果用平常的
debug
版本来调的话,不仅速度慢,而且调试的效率也不高。不如直接
printf

log
结合起来还更快定位错误。

 

 

Ref:

http://betabug.ch/blogs/ch-athens/1093

 

 

 

抱歉!评论已关闭.