Python Subprocess命令总是找不到
Kate 2020-11-12 23:10:02
adb 发送问题已解决 Mark
总是使用命令却不得法,为什么?
唯有细细看官方的文档和不断进行搜索,耐心地思考!
每一个关键字参数代表的是什么意思?不能随便用,要根据不同的场景,从而进行思考,对不同的方法进行不同的系统进行论证,最好是找到两种方式进行对比,就有细节可寻可以验证。
1.问题代码:
import subprocess
def runcmd(command):
ret = subprocess.run(command,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding="utf-8",timeout=1)
if ret.returncode == 0:
print("success:",ret)
else:
print("error:",ret)
runcmd(["dir","/b"])#序列参数
runcmd("exit 1")#字符串参数
import time
import subprocess
def cmd(command):
subp = subprocess.Popen(command,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding="utf-8")
subp.wait(2)
if subp.poll() == 0:
print(subp.communicate()[1])
else:
print("失败")
cmd("java -version")
cmd("exit 1")一不,小心,就被糊弄了,这种方式在window下执行不了,也会报错;
其原因是 shell:如果该参数为 True,将通过操作系统的 shell 执行指定的命令。
2.解决的方法:
删除shell=True
发送命令有两种方法,一种为popen管道,另外的是os.system
3.原因分析:
程序在window的系统上跑,并没有配置任何关于shell的命令,一般使用的是cmd.exe;
检查已经存在adb相关的命令;
Last updated
Was this helpful?