You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python os.system执行adb命令传参报错及变量未替换问题

问题根因
  • 初始代码中adb shell input text user属于硬编码固定字符串,没有引用你提前接收输入的user变量,所以输入框永远只会填入固定文本"user"。
  • os.system() 仅接收1个字符串类型的命令参数,你拆分传入两个参数必然触发system() takes at most 1 argument (2 given)报错,该函数不支持命令、参数分离传值的用法。
修正方法

将用户输入的变量拼接为完整的命令字符串传入os.system()即可,推荐使用Python 3.6+原生支持的f-string实现拼接,可读性和出错率远优于加号拼接的写法。

基础可用写法

直接替换原代码中硬编码的输入行:

os.system(f"adb shell input text {user}")

特殊字符兼容处理

adb shell input text 对输入内容有格式要求,最常见的是空格需要转义为%s,否则输入到空格位置会被截断。可以提前对用户输入做转义处理,适配带空格、特殊符号的账号:

# 转义空格,其他特殊字符可根据实际账号规则补充替换逻辑
escaped_user = user.replace(" ", "%s")
os.system(f"adb shell input text {escaped_user}")

修正后完整代码段

import os
import time

user = input("enter target account:")
escaped_user = user.replace(" ", "%s")
if inp == 1:
    os.system("adb shell monkey -p com.instagram.android -v 1")
    time.sleep(1)
    os.system("adb shell input tap 328 2200")
    time.sleep(1)
    os.system("adb shell input tap 500 178")
    time.sleep(1)
    os.system(f"adb shell input text {escaped_user}")
    time.sleep(1.5)
更稳妥的替代方案

如果不想手动处理各种转义规则,可以替换os.system为标准库的subprocess.run,用参数列表的形式传值,模块会自动处理特殊字符转义,稳定性更高:

import subprocess
# 不需要提前转义空格等特殊字符
subprocess.run(["adb", "shell", "input", "text", user], check=True)

内容的提问来源于stack exchange,提问作者IFM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 13:45:30