我在寫一個python程序,我想以不同的方式運行,無論它運行在Windows命令提示符還是Windows PowerShell中。我想知道是否有一種方法來確定在程序中運行的環境python。確定環境python運行在
在此先感謝!
我在寫一個python程序,我想以不同的方式運行,無論它運行在Windows命令提示符還是Windows PowerShell中。我想知道是否有一種方法來確定在程序中運行的環境python。確定環境python運行在
在此先感謝!
首先使用this code來獲取您的父進程ID。然後調用:
if ("powershell.exe" in os.popen("tasklist /fi \"PID eq %d\"" % parentPID).read()) {
# We're a child of powershell!!
...
}
雖然說實話,如果你是由powershell運行,執行不同的操作有點奇怪。你應該認真考慮爲什麼你要這樣做,並評估你是否做了不必要的事情。
如果您希望使用平臺(這在您的上一條語句中有所暗示),那麼平臺模塊通常會告訴您想知道的內容。
>> import platform
>> platform.architechture()
('64bit', 'WindowsPE')
注意,從它暗示docs使用is_64bits = sys.maxsize > 2**32
爲Mac,以確定64位VS 32位。
您可以嘗試一種解決方案。您可以從Python代碼中調用一些PowerShell命令作爲Write-Host(回聲等效於cmd)並獲得調用結果。如果失敗不是PowerShell。 (我現在無法測試)。
在調用腳本時,應該認真添加另一個參數。
當在腳本中時,sys.args
變量爲您提供傳遞給腳本的所有參數(首先始終是腳本的名稱)。
還有圖書館optparse它可以幫助您與工作.....
你在做什麼是不是一個好的做法:P完全相反:)無論如何,不要太藉此很難,我的意思是我不知道你想做什麼,但這聽起來像是一個危險的想法。
那麼,有一個配方[這裏](http://code.activestate.com/recipes/578133-get-parent-process-pid-win32/)來獲得父進程ID,你應該能夠適應獲取父進程名稱,但它可能不是一個好主意,使代碼的行爲依賴於啓動它的shell程序。您希望程序以何種方式運行? – Aya 2013-04-25 16:42:19