【python笔记】如何使用python调用.exe文件
python调用可执行文件
背景
微信推送当日天气、生日、纪念日小项目由于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() 会保存可执行程序中的打印值和主函数的返回值,且会将执行过程中要打印的内容打印出来
-
import os
-
main =
"project1.exe"
-
r_v = os.system(main)
-
print (r_v )
方法二、
commands.getstatusoutput() 会保存可执行程序中的打印值和主函数的返回值,但不会将执行过程中要打印的内容打印出来
-
import subprocess
-
import os
-
main =
"project1.exe"
-
if os.path.exists(main):
-
rc,out= subprocess.getstatusoutput(main)
-
print (rc)
-
print (
'*'*
10)
-
print (out)
方法三、
popen() 会保存可执行程序中的打印值,但不会保存主函数的返回值,也但不会将执行过程中要打印的内容打印出来
-
import os
-
main =
"project1.exe"
-
f = os.popen(main)
-
data = f.readlines()
-
f.close()
-
print (data)
另外,上面提到的三种方式,实际上都是在python中执行命令,因此他们不只是用来执行可执行文件,也可以用来执行linux系统中别的指令。
以上这篇在python中实现调用可执行文件.exe的3种方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
更多推荐
所有评论(0)