关于os.popen函数打开exe程序无法正确运行的问题。

博主遇到使用os.popen()调用数据库查询exe程序时,程序在运行47条数据后停止,而直接打开exe则正常。尝试通过pyinstaller打包并观察cmd窗口无报错信息。最终解决方案是通过cmd启动Python,再用os.popen()打开exe,揭示了错误源于第270行的print()语句。移除该行后程序正常运行。博客提供了一种在无法直接看到报错信息时的排查思路。
摘要由CSDN通过智能技术生成

      都说野生的动物好,但是放在程序猿身上,我觉得更是一种无奈。没有人指引,没有人教导,有的只是一颗探索,学习的心。这颗心让我们披荆斩棘。最终看到我们想要的成果。从一句简单的print('hello word')。到后面的种种问题,每次的跨越,都非常感谢自己从未放弃的心。不是为了什么,真的是那种一头扎进去。就出不来的感觉。这就是我为什么喜欢程序的原因。祝各位野生的程序员,学有所成。废话不多说上问题。

 

功能需求实现:通过os.popen()函数来调用一个查询数据库的前段exe程序。

情况:通过os.popen()打开exe程序无法正常运行,每次查询47条数据就会停止,无法继续运行。通过鼠标正常打开程序就可以正常运行。

解决问题经历:
1、通过pyinstaller打包程序,不带-w参数,让打开exe程序时,弹出cmd窗口,来看下报错信息。但是打包过后发现,通过鼠标正常打开程序可以显示cmd窗口,但是通过命令os.popen()可以打开exe程序,但是不显示cmd窗口。无法看到报错信息。

2、各种修改代码,均无果。不知道是什么原因。

 

最终解决问题思路:

由于不知道什么原因,所以肯定是要先找到报错信息,看不到报错信息就不知道哪里出错,灵机一动,通过cmd,来打开python,在用python通过os.popen().来打开exe程序,发现果然是不能用的。然后在输入os.popen()来打开exe程序,就会看到上一个程序的报错信息。如下图。注:如果要看到报错信息的话。最好打包的时候不要带-w参数。因为我没有试过用cmd启动python通过os.popen来打开exe带-w的exe程序是否可以看到报错信息。

 

从图上我们可以看到是程序第270行和323行错误。323行是函数入口,是这个函数里面的代码错误,但是当我看到270代码的时候我彻底无语,竟然是一句print(d)。d是一个列表的变量。然后我把这行代码删除。完美运行。xiete。why,why!

总结:虽然不知道为什么通过os.popen打开exe程序会导致print()这句错误,但是给大家提供了一个出现这个不知道什么原因,无法看到报错窗口的解决问题思路。所以,遇到不知道什么问题,最好是看到报错信息,可能是一个最简单的问题,但是不知道错在哪里了,那就无法解决了

最后觉得标题应该改为,通过cmd打开python来查看exe程序的运行错误信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值