2015-10-11 182 views
0

是否有一種區分操作系統實現錯誤(我在考慮OSX的Python版本)與一般錯誤的好方法?在OS X中的Python終端命令

這是否引發了一個異常,因爲它明確是一個Apple/OSX特定的命令,並且在subprocess.call期望的正常腳本命令之外?

如果是這樣,我應該如何讓python模仿我的輸入命令在終端中的行爲?

subprocess.call("defaults write com.apple.finder AppleShowAllFiles YES") 
+0

[不是shell命令。](https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/defaults.1.html) –

+0

你已經失敗了怎麼辦? –

+1

如果是腳本,Finder是否顯示隱藏文件無關緊要 - 無論Finder向用戶顯示什麼內容,腳本仍會看到隱藏的文件。另外,試着把'defaults'程序的完整路徑,即'subprocess.call(「/ usr/bin/defaults write ...」)''。此外,您需要重新啓動Finder以使設置生效,因此您需要'subprocess.call(「/ usr/bin/defaults write ... && killall Finder」)' –

回答

2

我意識到這個線程是幾個月大但是我認爲我會發布這個incase任何人都在尋找這個信息在未來。

我使用該命令經由蟒編輯的Plist(在這種情況下,Munki MangedInstalls.plist):

subprocess.call(' /usr/bin/defaults write /Library/Preferences/ManagedInstalls InstallAppleSoftwareUpdates 1 ', shell=True) 

而這個命令讀取相同的plist:

os.popen(' /usr/bin/defaults read /Library/Preferences/ManagedInstalls InstallAppleSoftwareUpdates ').read()