如何通过ADB Shell传入变量?现有代码无法正常运行求助
解决ADB Shell传入变量的问题
你的代码有两个关键问题,直接修改这两处就能正常运行:
- 处理文本读取的格式问题
readlines(1)返回的是包含单行文本的列表,需要取出列表里的字符串元素,同时去掉末尾的换行符(避免传到ADB时多出无效换行):
aggr = open(r"xxx.txt", 'r') content = aggr.readlines(1)[0].strip() # 提取单行内容并去除换行、首尾空格
- 正确将变量嵌入ADB命令
你之前的写法是把[content]当作普通字符串传递,需要用字符串格式化把变量值真正插入到命令里,推荐用Python的f-string(3.6及以上版本支持):
device.shell(f'input text "{content}"')
如果你的Python版本不支持f-string,也可以用format方法替代:
device.shell('input text "{}"'.format(content))
额外注意:如果content里包含ADB input text命令的特殊字符(比如空格、双引号、&等),需要先转义才能正常识别,可添加一个简单的处理函数:
def escape_adb_text(text): return text.replace(' ', '%s').replace('"', '\\"').replace('&', '\\&') device.shell(f'input text "{escape_adb_text(content)}"')
内容的提问来源于stack exchange,提问作者User3872
相关产品推荐
相关产品推荐

