我正尝试在UNIX上运行.mpkg安装程序,当我运行以下代码时:
p = subprocess.Popen(['/Path/to/File.mpkg'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
return p输出是这样的:
<subprocess.Popen object at 0x11384xxx>我的第一个问题是-有没有在UNIX上运行mpkg安装程序的更简单的方法?其次,我似乎不知道如何使用对我有利的subprocess.Popen对象。
发布于 2012-06-22 22:10:03
遗憾的是,我不确定mpkg是什么,但有两个选择。
.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,如下所示:
p = subprocess.Popen(
['/Path/to/File.mpkg'],
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
stdin=subprocess.PIPE)
(out, err) = p.communicate()现在out包含标准输出,err包含标准错误。
如果您只想调用该命令并等待它完成,您也可以使用subprocess.call快捷方式。
https://stackoverflow.com/questions/11156821
复制相似问题