2011-09-09 67 views
2

我在寫一些特定於POSIX的代碼,雖然我不支持其他平臺,但我想確保他們在導入時得到一個很好的清除錯誤,而不是奇怪的錯誤,如果他們試圖使用我的代碼。Python:斷言我在POSIX上運行?

有沒有一種簡潔的方法來檢查?我想我可以去import posix,並抓住ImportError,但看起來很冗長。

+0

這不就是'os.name'告訴你的嗎? 'os.name'有什麼問題? –

+0

S.Lott:是的,你已經回答了我的問題(但在評論中) – kdt

+2

抓住錯誤並打印一條警告「只支持POSIX」。一些非POSIX系統實際上可能會工作,並且你會損害這些用戶。 –

回答

11

看看os.name

進口的依賴操作系統模塊的名稱。 以下名稱目前已註冊:'posix','nt','os2', 'ce','java','riscos'。

如果您需要更精細的粒度,還有sys.platformos.uname()

+0

這是這張票。 – jathanism

+0

從http://en.wikipedia.org/wiki/Windows_NT_3.1#POSIX:「Windows NT 3.1包括一個POSIX兼容性最低的子系統。」 :) –

0

而不是導入posix你應該導入os,所以你可以有一個指令的子集可用於用戶(但不是posix特定的),那麼你可以使用sys.platform功能來檢查用戶在哪個平臺上運行代碼,然後拋出一個異常或不:)

+0

埃姆我的答案是有點不完整:我說的指令的子集只適用於非POSIX用戶,而posix用戶將擁有所有這些可用:) –

3

,您可以:

def is_posix(): 
    try: 
     import posix 
     return True 
    except ImportError: 
     return False 

您也可以解析sys.platformos.uname()[0],但我認爲這是更自然地問「您的系統是否具有該功能」而不是「是你的系統之一...,因爲我知道他們現在有這個功能「。