0

我正在编写一个 python 脚本来自动关闭一个 Android 模拟器。我曾经在 Linux 环境中工作,但我现在正在将代码迁移到 Windows。问题是,

$ adb emu kill

在 Windows 上不起作用,所以我求助于制作一个远程登录到模拟器并杀死模拟器的 python 脚本。这是代码:

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()

当我这样做时,它完美无缺。谁能告诉发生了什么?

4

1 回答 1

0

我不知道这里的细节,但是当你打开一个 Telnet 会话时,服务器需要启动一个新的 shell 进程,并且在 shell 启动之前可能无法接受任何数据,这取决于服务器的实现。

解决您的问题的一个简单方法是添加time.sleep(0.5)before tn.write("kill\n"),让服务器有半秒钟的时间准备好。更优雅的方法是在编写任何内容之前等待提示,如下所示:

r = tn.read_until("$ ", 5)
assert "$ " in r, "Timeout waiting for prompt!"
tn.write("kill\n")
于 2013-03-20T09:24:29.460 回答