背景

微信推送当日天气、生日、纪念日小项目由于github的定时执行延迟太高了,遂打算自己用电脑定时跑,需要解决python调用.exe文件问题。多方查找后以下面的方法解决。
采用下述方法一时,由于.exe文件设置了pause("press any key to continue"),因此无法在.exe结束时自动跳出到py的文件中。在这里插入图片描述
考虑了python中模拟键盘输入的pynput库:

import os
import pynput
keyboard = Controller()
os.system("weixin.exe")
keyboard.press(Key.space)
keyboard.release(Key.space)

但由于显示pause("press any key to continue")时.exe文件未执行完毕,因此也不会进行下面的press和release操作。
改用方法三可以正常实现要执行的操作,不会存在返回pause("press any key to continue")并输入按键才能继续的问题。不知道内在逻辑是什么,但是确实能跑了,如果有大神可以给我讲讲吗?
修改后的的代码如下:

import os
os.popen("weixin.exe")

但会偶先未知原因的报错,but好在正常运行。
报错内容如下:


转载内容

方法一、

os.system() 会保存可执行程序中的打印值和主函数的返回值,且会将执行过程中要打印的内容打印出来


   
   
  1. import os
  2. main = "project1.exe"
  3. r_v = os.system(main)
  4. print (r_v )

方法二、

commands.getstatusoutput() 会保存可执行程序中的打印值和主函数的返回值,但不会将执行过程中要打印的内容打印出来


   
   
  1. import subprocess
  2. import os
  3. main = "project1.exe"
  4. if os.path.exists(main):
  5. rc,out= subprocess.getstatusoutput(main)
  6. print (rc)
  7. print ( '*'* 10)
  8. print (out)

方法三、

popen() 会保存可执行程序中的打印值,但不会保存主函数的返回值,也但不会将执行过程中要打印的内容打印出来


   
   
  1. import os
  2. main = "project1.exe"
  3. f = os.popen(main) 
  4. data = f.readlines() 
  5. f.close() 
  6. print (data)

另外,上面提到的三种方式,实际上都是在python中执行命令,因此他们不只是用来执行可执行文件,也可以用来执行linux系统中别的指令。

以上这篇在python中实现调用可执行文件.exe的3种方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_42036402/article/details/117120931 ————————————————
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐