我正在编写一个python脚本来自动关闭Android模拟器。我曾经在Linux环境中工作,但我现在正在将代码迁移到Windows。问题是,
$ adb emu kill
在Windows上不起作用所以我使用python脚本telnet到模拟器并杀死模拟器。这是代码:
import telnetlib
host = "localhost"
port = "5554"
tn = telnetlib.Telnet(host,port)
tn.write("kill\n")
tn.close()
我遇到的问题是,当我输入
时尝试运行此代码时,它不起作用python killEmulator.py
“killEmulator.py”是代码的文件名。
但是当我在命令行上逐个输入这个文件的行时,它可以工作并设法杀死模拟器。
import telnetlib
host = "localhost"
port = "5554"
tn = telnetlib.Telnet(host,port)
tn.write("kill\n")
tn.close()
当我这样做时,它完美无缺。有谁能说出发生了什么?
答案 0 :(得分:0)
我不知道这里的细节,但是当你打开一个Telnet会话时,服务器需要启动一个新的shell进程,并且在shell启动之前可能无法接受任何数据,具体取决于服务器实现
对您的问题进行简单修复就是在time.sleep(0.5)
之前添加tn.write("kill\n")
,为服务器提供半秒准备。一种更优雅的方式是在写任何东西之前等待提示,如下所示:
r = tn.read_until("$ ", 5)
assert "$ " in r, "Timeout waiting for prompt!"
tn.write("kill\n")