都说野生的动物好,但是放在程序猿身上,我觉得更是一种无奈。没有人指引,没有人教导,有的只是一颗探索,学习的心。这颗心让我们披荆斩棘。最终看到我们想要的成果。从一句简单的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程序的运行错误信息。