python子进程调用没有做任何事情

时间:2017-03-20 02:08:07

标签: android python terminal subprocess

我正在创建一个GUI,通过单击按钮启动各种应用程序。为了避免让我不得不手动打开它们。

我目前正在尝试启动Android模拟器,我可以使用以下命令执行此操作:emulator @Nexus_5X_API_22 ...非常简单。

我正在尝试使用以下命令在python中执行此操作: subprocess.Popen(["emulator @Nexus_5X_API_22"],shell = True)

然而,调用它时似乎没有任何事情发生。打印语句返回'127',不知道推断了什么?

我做错了什么?

----------- ----------- EDIT

这里有一些代码,我正在使用Kivy。

class RunTests(Screen):
def __init__(self,**kwargs):
    super(RunTests,self).__init__(**kwargs)

    layout1 = StackLayout(orientation='lr-bt')

    runbutton = Button(text='run all', size_hint=(0.8,0.05))
    runbutton.bind(on_press=self.runAll)

    layout1.add_widget(runbutton)

    self.add_widget(layout1)

def runAll(self,*args):
    subprocess.Popen(["emulator", "@Nexus_5X_API_22"])

2 个答案:

答案 0 :(得分:0)

问题是您没有将参数分成列表中的单独项目。因为你说" shell = True",子进程试图运行一个名为"emulator\ @Nexux_5X_API_22"的程序。分离出参数并跳过shell

subprocess.Popen(["emulator", "@Nexus_5X_API_22"])

答案 1 :(得分:0)

好的,所以@Youn Elan建议使用完整路径。

subprocess.Popen(['/Users/User/Library/Android/sdk/tools/emulator -netdelay none -netspeed full -avd Nexus_5X_API_22'],shell=True)

这确实有用。