Python subprocess.call 与 cwd 不工作

Posted

技术标签:

【中文标题】Python subprocess.call 与 cwd 不工作【英文标题】:Python subprocess.call with cwd not working 【发布时间】:2017-09-24 10:29:41 【问题描述】:

我尝试了各种各样的东西,没有一个工作。 以下是我的尝试:

subprocess.call(['cordova-test android tests --app platforms/android/build/outputs/apk/android-debug.apk --device-name=emulator-5554 --no-compile'],
      cwd = ['/Users/User/Documents/dev/engineerappcopy'], shell = True)

下一个

subprocess.call(['cordova-test android tests --app platforms/android/build/outputs/apk/android-debug.apk --device-name=emulator-5554 --no-compile'],
       cwd = shlex.split(['/Users/User/Documents/dev/engineerappcopy'])

下一个

subprocess.call(['cordova-test android tests --app platforms/android/build/outputs/apk/android-debug.apk --device-name=emulator-5554 --no-compile'],
       cwd = ['/Users/User/Documents/dev/engineerappcopy'])

【问题讨论】:

会发生什么?有什么错误? 问题是什么? 这与标签cmd有什么关系? 【参考方案1】:

首先,参数行必须是字符串(可选带空格)或参数列表,但不能将命令行作为唯一参数。

那么,当前工作目录必须是一个字符串,而不是一个列表。

试试这个:

subprocess.call(['cordova-test','android','tests','--app','platforms/android/build/outputs/apk/android-debug.apk','--device-name=emulator-5554','--no-compile'],
       cwd = '/Users/User/Documents/dev/engineerappcopy')

【讨论】:

我认为这适用于,shell = True 最后。抛出其他明智的未知目录。然而什么也没发生......但我认为你现在解决了它,谢谢Jean 好的,shell=True 它是,当命令是别名或函数(或内置)时。很高兴它成功了。

以上是关于Python subprocess.call 与 cwd 不工作的主要内容,如果未能解决你的问题,请参考以下文章

Python 调用外部命令:subprocess 模块

subprocess.call() 如何与 shell=False 一起工作?

从Python subprocess.call的输出中的列获取值

Python, subprocess, call(), check_call 和 returncode 来查找命令是不是存在

Python:使用 subprocess.call 获取输出,而不是 Popen [重复]

如何使用 python 2.7.6 使 subprocess.call 超时?