2015-10-20 57 views
-2

在創建應包含env變量作爲每個鍵的值的dictionzry時存在一些問題。 這是導致我猜想的問題的單引號。有人能指出我這樣做的pythonic方式嗎? :)如何使用os.environ作爲字典值

macros = { 
    'date': os.environ['NOTIFY_SHORTDATETIME'], 
    'hostname': os.environ['NOTIFY_HOSTNAME'], 
    'ip': os.environ['NOTIFY_HOSTADDRESS'], 
    'alias': os.environ['NOTIFY_HOSTALIAS'], 
    'hostcmd': os.environ['NOTIFY_HOSTCHECKCOMMAND'], 
    'servicecmd': os.environ['NOTIFY_SERVICECHECKCOMMAND'], 
    'servicenotifnum': os.environ['NOTIFY_SERVICENOTIFICATIONNUMBER'], 
    'servicedesc': os.environ['NOTIFY_SERVICEDESC'], 
    'hostoutput': os.environ['NOTIFY_HOSTOUTPUT'], 
    'serviceoutput': os.environ['NOTIFY_SERVICEOUTPUT'], 
    'hoststate': os.environ['NOTIFY_HOSTSTATE'], 
    'svcstate': os.environ['NOTIFY_SERVICESTATE'], 
    'lasthoststate': os.environ['NOTIFY_LASTHOSTSTATE'], 
    'laststatesvc': os.environ['NOTIFY_LASTSTATESERVICE'], 
    'notiftype': os.environ['NOTIFY_NOTIFICATIONTYPE'], 
} 
+1

更改''日期':os.environ ['NOTIFY_SHORTDATETIME \']','到'日期':os.environ ['NOTIFY_SHORTDATETIME'],' –

+1

您在第二位持續丟失'''線。 – Jkdc

+0

語法高亮?最小的例子? –

回答

1

主要錯誤意味着命名的項目不在os.environ存在。如果你正試圖找出您的計算機上存在,您可以調試並打印出清單,如:

import os 
for k in os.environ: 
    print k 

在我的Windows XP中,我得到這些輸出:

TMP 
COMPUTERNAME 
USERDOMAIN 
PSMODULEPATH 
COMMONPROGRAMFILES 
PROCESSOR_IDENTIFIER 
PROGRAMFILES 
PROCESSOR_REVISION 
SYSTEMROOT 
PATH 
PROGRAMFILES(X86) 
COMSPEC 
TEMP 
COMMONPROGRAMFILES(X86 
PROCESSOR_ARCHITECTURE 
ALLUSERSPROFILE 
LOCALAPPDATA 
HOMEPATH 
UATDATA 
VS120COMNTOOLS 
PROGRAMW6432 
USERNAME 
LOGONSERVER 
PROMPT 
SESSIONNAME 
PROGRAMDATA 
USERDNSDOMAIN 
PATHEXT 
FP_NO_HOST_CHECK 
WINDIR 
APPDATA 
HOMEDRIVE 
SYSTEMDRIVE 
NUMBER_OF_PROCESSORS 
VBOX_INSTALL_PATH 
PROCESSOR_LEVEL 
PROCESSOR_ARCHITEW6432 
COMMONPROGRAMW6432 
OS 
PUBLIC 
USERPROFILE 

基於你得到的錯誤,你似乎試圖使用不同操作系統的環境變量,而不管你使用的是什麼實際上是。您應該通過引用計算機的正確操作系統環境變量來解決此問題。

+0

它是在警報時由nagios解析的環境變量,因此它們正常。只是在調試期間,變量不能像djangoliv寫的那樣「尚未」。謝謝 – bennethos

相關問題