[英]Running a mpkg installer through python and subprocess.Popen objects
我正在嘗試在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對象對我有好處。
可悲的是我不確定mpkg
是什么,但是有兩個選擇。
.run
格式。 在這種情況下,您的調用Popen
是正確的,只要你有執行權限File.mpkg
(請與ls -l /Path/to/File.mpkg
)。 安裝程序應該運行正常。 或者,它打算由系統工具處理,例如.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
快捷方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.