我在寫一些特定於POSIX的代碼,雖然我不支持其他平臺,但我想確保他們在導入時得到一個很好的清除錯誤,而不是奇怪的錯誤,如果他們試圖使用我的代碼。Python:斷言我在POSIX上運行?
有沒有一種簡潔的方法來檢查?我想我可以去import posix
,並抓住ImportError
,但看起來很冗長。
我在寫一些特定於POSIX的代碼,雖然我不支持其他平臺,但我想確保他們在導入時得到一個很好的清除錯誤,而不是奇怪的錯誤,如果他們試圖使用我的代碼。Python:斷言我在POSIX上運行?
有沒有一種簡潔的方法來檢查?我想我可以去import posix
,並抓住ImportError
,但看起來很冗長。
看看os.name
:
進口的依賴操作系統模塊的名稱。 以下名稱目前已註冊:'posix','nt','os2', 'ce','java','riscos'。
如果您需要更精細的粒度,還有sys.platform
和os.uname()
。
這是這張票。 – jathanism
從http://en.wikipedia.org/wiki/Windows_NT_3.1#POSIX:「Windows NT 3.1包括一個POSIX兼容性最低的子系統。」 :) –
而不是導入posix你應該導入os,所以你可以有一個指令的子集可用於用戶(但不是posix特定的),那麼你可以使用sys.platform功能來檢查用戶在哪個平臺上運行代碼,然後拋出一個異常或不:)
埃姆我的答案是有點不完整:我說的指令的子集只適用於非POSIX用戶,而posix用戶將擁有所有這些可用:) –
,您可以:
def is_posix():
try:
import posix
return True
except ImportError:
return False
您也可以解析sys.platform
或os.uname()[0]
,但我認爲這是更自然地問「您的系統是否具有該功能」而不是「是你的系統之一...,因爲我知道他們現在有這個功能「。
這不就是'os.name'告訴你的嗎? 'os.name'有什麼問題? –
S.Lott:是的,你已經回答了我的問題(但在評論中) – kdt
抓住錯誤並打印一條警告「只支持POSIX」。一些非POSIX系統實際上可能會工作,並且你會損害這些用戶。 –