首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过python和subprocess.Popen对象运行mpkg安装程序

通过python和subprocess.Popen对象运行mpkg安装程序
EN

Stack Overflow用户
提问于 2012-06-22 21:08:51
回答 1查看 160关注 0票数 0

我正尝试在UNIX上运行.mpkg安装程序,当我运行以下代码时:

代码语言:javascript
复制
p = subprocess.Popen(['/Path/to/File.mpkg'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
return p

输出是这样的:

代码语言:javascript
复制
<subprocess.Popen object at 0x11384xxx>

我的第一个问题是-有没有在UNIX上运行mpkg安装程序的更简单的方法?其次,我似乎不知道如何使用对我有利的subprocess.Popen对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-22 22:10:03

遗憾的是,我不确定mpkg是什么,但有两个选择。

  • 它是一个自运行的软件包,可能是一个外壳脚本,类似于有时用于Unix软件的.run格式。在这种情况下,只要您拥有对File.mpkg的execute权限(与ls -l /Path/to/File.mpkg核对),您对Popen的调用就是正确的。安装程序应该运行得很好。
  • 或者,它是由系统工具处理的,比如.deb包是由dpkg程序处理的。在这种情况下,您需要如下内容:

P= subprocess.Popen('/usr/bin/dpkg','-i','/Path/to/File.deb',...)

或者,或者:

P= subprocess.Popen('dpkg -i /Path/to/File.deb',...,shell=True)

现在,您对这个Popen对象做什么取决于您想要实现什么。如果您希望获得进程的输出,则需要调用Popen.communicate,如下所示:

代码语言:javascript
复制
p = subprocess.Popen(
    ['/Path/to/File.mpkg'],
    stdout=subprocess.PIPE, stderr=subprocess.PIPE,
    stdin=subprocess.PIPE)
(out, err) = p.communicate()

现在out包含标准输出,err包含标准错误。

如果您只想调用该命令并等待它完成,您也可以使用subprocess.call快捷方式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11156821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档