利用subprocess模块调用外部程序

       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

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值