记录一下使用AHK调用Python并附加参数,读取Python返回结果

GPT确实是好用,这种代码网上根本找不到

AHK部分:

#SingleInstance, Force

SendMode Input

SetWorkingDir, %A_ScriptDir%


 

; RunPython.ahk

; 设置 Python 解释器的路径

pythonPath := "D:\Anaconda\envs\py3.8\pythonw.exe"

pythonArguments1 := "1234"

pythonArguments2 := "5678"

; 要执行的 Python 脚本路径

pythonScript := "C:\Users\Administrator\Desktop\AHKTEST\test.py -" pythonArguments1 " -" pythonArguments2

MsgBox, %pythonScript%

; 使用 Run 命令并捕获输出

RunWait %pythonPath% %pythonScript% ,UseErrorLevel, OutputVarPID

MsgBox, %OutputVarPID%

; 读取 Python 脚本的输出文件

FileRead, output, output.txt

; 检查错误级别并输出结果

if (ErrorLevel = 0) {

    MsgBox 成功执行 Python 脚本!输出:%output%

} else {

    MsgBox Python 脚本执行失败!错误级别:%ErrorLevel%

}

Python部分:

import time

from sys import argv

arguments = argv

time.sleep(5)

with open("output.txt", "w") as file:

    file.write(str(arguments))

总体来说,是通过AHK附带参数运行Python文件,并使用不带命令行窗口的pythonw在后台执行,Python执行后,把执行结果写入到一个文件中,再由ahk读取,这种方法比剪贴板高级一点,但是比从Python调用AHK使用subprocess复杂一点。

需要注意的是,如果pythonScript采用这种写法

pythonScript := Format("C:\Users\Administrator\Desktop\AHKTEST\test.py -{1} -{2}",pythonArguments1,pythonArguments2)

会导致OutputVarPID获取失败,尝试了一下,需要使用下面的写法才能正确获取OutputVarPID

pythonScript := "C:\Users\Administrator\Desktop\AHKTEST\test.py -" pythonArguments1 " -" pythonArguments2

除了使用RunWait还可以使用Run + process,waitclose的方式,这种方式可以解决在等待期间无法响应其他输入

#SingleInstance, Force

SendMode Input

SetWorkingDir, %A_ScriptDir%

; 设置 Python 解释器的路径

pythonPath := "D:\Anaconda\envs\py3.8\pythonw.exe"

pythonArguments1 := "1234"

pythonArguments2 := "5678"

; 要执行的 Python 脚本路径

pythonScript := "C:\Users\Administrator\Desktop\AHKTEST\test.py -" pythonArguments1 " -" pythonArguments2

MsgBox, %pythonScript%

; 使用 RunWait 命令并捕获输出

Run %pythonPath% %pythonScript%, , UseErrorLevel, OutputVarPID

MsgBox, %OutputVarPID%

; 等待 Python 脚本执行完成

Process, WaitClose, %OutputVarPID%

; 读取 Python 脚本的输出文件

FileRead, output, output.txt

; 检查错误级别并输出结果

if (ErrorLevel = 0) {

    MsgBox 成功执行 Python 脚本!输出:%output%

} else {

    MsgBox Python 脚本执行失败!错误级别:%ErrorLevel%

}

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值