【问题标题】:Python: run shell command in a specific directory [duplicate]Python:在特定目录中运行shell命令[重复]
【发布时间】:2016-12-14 09:27:16
【问题描述】:

我使用python脚本编译一个maven项目。

如果我使用

from subprocess import call
call("mvn clean && mvn compile")

我无法定义我的 maven 项目的目录,maven 尝试在 Python 脚本的目录中编译。

有没有标准的方法来定义shell命令的执行目录?

【问题讨论】:

  • 不,subprocess.call 中有一个cwd 参数,比os.chdir() 好很多

标签: python shell


【解决方案1】:

你的命令应该使用

  • shell=True 因为它使用了 2 个由退出条件测试链接的命令
  • cwd=your_directory
  • 状态检查

像这样:

from subprocess import call
status = call("mvn clean && mvn compile",cwd="/users/foo/xxx",shell=True)

我个人倾向于避免依赖shell=True。在这些情况下,我倾向于分解这两个命令并将参数直接作为参数列表放入,因此如果出现一些讨厌的空格,它会被自动引用:

if call(["mvn","clean"],cwd="/users/foo/xxx") == 0:
    status = call(["mvn","compile"],cwd="/users/foo/xxx")

请注意,如果您想获取 python 端的命令输出(不重定向到脏文件),您需要 Popenstdout=PIPE 而不是 call

【讨论】:

    猜你喜欢
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    • 2016-10-09
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多