我有这个代码,它运行用户为adb输入的任何命令,例如,用户输入单词' devices'和' adb.exe设备'将运行并打印出设备列表。 这适用于'设备'但是每当发出更复杂的命令时,例如带有空格的命令,“shell pm path com.myapp.app'它失败了。
c_arg = self.cmdTxt.GetValue() ##gets the user input, a string
params = [toolsDir + '\\adb.exe', c_arg] ##builds the command
p = Popen(params, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) ## executes the command
stdout, stderr = p.communicate() ## get output
self.progressBox.AppendText(stdout) # print output of command
在我将它放入params并在Popen中运行之前,是否需要对.GetValue()中的字符串进行一些格式化或处理?
答案 0 :(得分:0)
subprocess.Popen
获取完整的命令字符串,而不是列表。
params = str(buildpath)+"\\adb.exe"+c_arg #c_arg is a string of arguments.