加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
sub_process.py 3.24 KB
一键复制 编辑 原始数据 按行查看 历史
lihanhua 提交于 2024-11-08 16:08 . skip acuator if possible
import subprocess
import time
import os
# 要执行的命令
# command = "echo '输出1\n输出2\n<end>\n输出4'" # 示例命令,实际使用时请替换为你的命令
def call_actuator(input: str) -> None:
print(f"--------call actutor: {str}------------")
command = [
"kylin-actuator",
f"\"{input}\"",
]
# 创建子进程并传入参数
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
# 设置一个标志,用于检查是否已经找到<end>
output = ""
while True:
line = process.stdout.readline()
if line:
print(line)
if '<AI>' in line:
output += line[4:]
elif '<end>' in line:
break
elif process.poll() is not None:
break
else:
# 如果没有新的输出,等待一段时间再检查
time.sleep(0.5)
if output == "":
output = "出现异常"
return output
# if gvar.scene_name(session_id) == "任务执行":
# # matches = re.findall(':(.*)', output)
# matches = re.findall(r'\{.*\}', output)
# # 将所有匹配的子串拼接起来
# result = '\n'.join(matches)
# record["order"] = result
# print(result) # 输出:"open 蓝牙\nreboot"
# out_file = "/home/lhh/.kylin-actuator/output"
# if "{find " in result:
# if os.path.exists(out_file):
# try:
# # 删除文件
# os.remove(out_file)
# except PermissionError:
# print(f"没有权限删除文件 {out_file}。")
# except Exception as e:
# print(f"删除文件时发生错误: {e}")
# else:
# print(f"文件 {out_file} 不存在,无需删除。")
# with open('/home/lhh/.kylin-actuator/input', 'w') as file:
# # 将文本写入到文件中
# file.write(result)
# # subprocess.run("kylin-actuator", capture_output=False, text=True, shell=True)
# # 使用subprocess.Popen()执行命令,不等待命令完成
# subprocess.Popen("kylin-actuator", shell=True)
# output = re.sub(r'\{(.*)\}', r'\1', output)
# if "{find " in result:
# time.sleep(2)
# if os.path.exists(out_file):
# try:
# with open(out_file, 'r') as file:
# content = file.read()
# if content != "":
# output = output + "\n\n执行结果:\n" + content
# except PermissionError:
# print(f"没有权限删除文件 {out_file}。")
# except Exception as e:
# print(f"删除文件时发生错误: {e}")
# else:
# print(f"文件 {out_file} 不存在")
# matches = re.findall(r'\{(.*)\}', output)
# # 将匹配的部分用换行符连接起来
# orders = '\n'.join(matches)
# # 打印结果
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化