2013-04-25 90 views
2

我在寫一個python程序,我想以不同的方式運行,無論它運行在Windows命令提示符還是Windows PowerShell中。我想知道是否有一種方法來確定在程序中運行的環境python。確定環境python運行在

在此先感謝!

+0

那麼,有一個配方[這裏](http://code.activestate.com/recipes/578133-get-parent-process-pid-win32/)來獲得父進程ID,你應該能夠適應獲取父進程名稱,但它可能不是一個好主意,使代碼的行爲依賴於啓動它的shell程序。您希望程序以何種方式運行? – Aya 2013-04-25 16:42:19

回答

1

首先使用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位。

0

您可以嘗試一種解決方案。您可以從Python代碼中調用一些PowerShell命令作爲Write-Host(回聲等效於cmd)並獲得調用結果。如果失敗不是PowerShell。 (我現在無法測試)。

0

在調用腳本時,應該認真添加另一個參數。

當在腳本中時,sys.args變量爲您提供傳遞給腳本的所有參數(首先始終是腳本的名稱)。

還有圖書館optparse它可以幫助您與工作.....

你在做什麼是不是一個好的做法:P完全相反:)無論如何,不​​要太藉此很難,我的意思是我不知道你想做什麼,但這聽起來像是一個危險的想法。