Python输出结果到字典

2024-06-26 01:33:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个热测试代码,该代码需要每10秒从以下命令获取一次信息racadm getsensorinfo

我想将信息作为字典保存,以便每10秒将相关信息写入csv文件。 我试过几种方法,但都达不到相应的效果

这是我试图制作字典的输出:

Sensor Type : POWER
<Sensor Name>                   <Status>                 <Type>         
PS1 Status                      Present                  AC             
PS2 Status                      Present                  AC             

Sensor Type : TEMPERATURE
<Sensor Name>            <Status>    <Reading> <lc> <uc>  <lnc>[R/W]  <unc>[R/W]
[Key = iDRAC.Embedded.1#CPU1Temp]
CPU1 Temp                     Ok      35C      3C   88C      NA [N]      NA [N]

[Key = iDRAC.Embedded.1#CPU2Temp]
CPU2 Temp                     Ok      39C      3C   88C      NA [N]      NA [N]

[Key = iDRAC.Embedded.1#SystemBoardInletTemp]
System Board Inlet Temp       Ok      18C      -7C  47C      3C [Y]      43C [Y]

[Key = iDRAC.Embedded.1#SystemBoardExhaustTemp]
System Board Exhaust Temp     Ok      29C      3C   80C      8C [N]      75C [N]



Sensor Type : FAN
<Sensor Name>                   <Status>    <Reading>   <lc>        <uc>        <PWM %>     <Type>      
System Board Fan1A              Ok          5640RPM     600RPM      NA          25%         Standard Performance
System Board Fan1B              Ok          5160RPM     600RPM      NA          25%         Standard Performance
System Board Fan2A              Ok          5520RPM     600RPM      NA          25%         Standard Performance
System Board Fan2B              Ok          5280RPM     600RPM      NA          25%         Standard Performance
System Board Fan3A              Ok          5520RPM     600RPM      NA          25%         Standard Performance
System Board Fan3B              Ok          5280RPM     600RPM      NA          25%         Standard Performance
System Board Fan4A              Ok          5520RPM     600RPM      NA          25%         Standard Performance
System Board Fan4B              Ok          5160RPM     600RPM      NA          25%         Standard Performance
System Board Fan5A              Ok          5520RPM     600RPM      NA          25%         Standard Performance
System Board Fan5B              Ok          5160RPM     600RPM      NA          25%         Standard Performance
System Board Fan6A              Ok          5520RPM     600RPM      NA          25%         Standard Performance
System Board Fan6B              Ok          5280RPM     600RPM      NA          25%         Standard Performance
System Board Fan7A              Ok          5640RPM     600RPM      NA          25%         Standard Performance
System Board Fan7B              Ok          5160RPM     600RPM      NA          25%         Standard Performance
System Board Fan8A              Ok          5520RPM     600RPM      NA          25%         Standard Performance
System Board Fan8B              Ok          5280RPM     600RPM      NA          25%         Standard Performance

Sensor Type : VOLTAGE
<Sensor Name>                   <Status>    <Reading>           <lc>        <uc>        
System Board DIMM PG            Ok          Good                NA          NA          
System Board NDC PG             Ok          Good                NA          NA          
System Board PS1 PG FAIL        Ok          Good                NA          NA          
System Board PS2 PG FAIL        Ok          Good                NA          NA          
System Board BP0 PG             Ok          Good                NA          NA          
System Board BP1 PG             Ok          Good                NA          NA          
System Board 1.8V SW PG         Ok          Good                NA          NA          
System Board 2.5V SW PG         Ok          Good                NA          NA          
System Board 5V SW PG           Ok          Good                NA          NA          
System Board PVNN SW PG         Ok          Good                NA          NA          
System Board VSB11 SW PG        Ok          Good                NA          NA          
System Board VSBM SW PG         Ok          Good                NA          NA          
System Board 3.3V B PG          Ok          Good                NA          NA          
CPU1 MEM012 VDDQ PG             Ok          Good                NA          NA          
CPU1 MEM012 VPP PG              Ok          Good                NA          NA          
CPU1 MEM012 VTT PG              Ok          Good                NA          NA          
CPU1 MEM345 VDDQ PG             Ok          Good                NA          NA          
CPU1 MEM345 VPP PG              Ok          Good                NA          NA          
CPU1 MEM345 VTT PG              Ok          Good                NA          NA          
CPU1 VCCIO PG                   Ok          Good                NA          NA          
CPU1 VCORE PG                   Ok          Good                NA          NA          
CPU1 FIVR PG                    Ok          Good                NA          NA          
CPU2 MEM012 VDDQ PG             Ok          Good                NA          NA          
CPU2 MEM012 VPP PG              Ok          Good                NA          NA          
CPU2 MEM012 VTT PG              Ok          Good                NA          NA          
CPU2 MEM345 VDDQ PG             Ok          Good                NA          NA          
CPU2 MEM345 VPP PG              Ok          Good                NA          NA          
CPU2 MEM345 VTT PG              Ok          Good                NA          NA          
CPU2 VCCIO PG                   Ok          Good                NA          NA          
CPU2 VCORE PG                   Ok          Good                NA          NA          
CPU2 FIVR PG                    Ok          Good                NA          NA          
PS1 Voltage 1                   Ok          232.00V             NA          NA          
PS2 Voltage 2                   Ok          230.00V             NA          NA          
System Board 3.3V A PG          Ok          Good                NA          NA          
CPU1 VSA PG                     Ok          Good                NA          NA          
CPU2 VSA PG                     Ok          Good                NA          NA          
System Board BP2 PG             Ok          Good                NA          NA          

Sensor Type : CURRENT
<Sensor Name>            <Status>    <Reading> <lc> <uc>  <lnc>[R/W]  <unc>[R/W]
[Key = iDRAC.Embedded.1#PS1Current1]
PS1 Current 1                 Ok      0.4Amps  NA   NA       0Amps [N]      0Amps [N]

[Key = iDRAC.Embedded.1#PS2Current2]
PS2 Current 2                 Ok      0.4Amps  NA   NA       0Amps [N]      0Amps [N]

[Key = iDRAC.Embedded.1#SystemBoardPwrConsumption]
System Board Pwr Consumption  Ok      130Watts NA   1794Watts 0Watts [N]      1638Watts [Y]


Sensor Type : PROCESSOR
<Sensor Name>                   <Status>    <State>             <lc>        <uc>        
CPU1 Status                     Ok          Presence_Detected   NA          NA          
CPU2 Status                     Ok          Presence_Detected   NA          NA          

Sensor Type : MEMORY
<Sensor Name>   <Status>    <State>                                     <lc>    <uc>      
DIMM A1         Ok          Presence_Detected                           NA      NA        
DIMM A2         N/A         Absent                                      NA      NA        
DIMM A3         N/A         Absent                                      NA      NA        
DIMM A4         N/A         Absent                                      NA      NA        
DIMM A5         N/A         Absent                                      NA      NA        
DIMM A6         N/A         Absent                                      NA      NA        
DIMM A7         N/A         Absent                                      NA      NA        
DIMM A8         N/A         Absent                                      NA      NA        
DIMM A9         N/A         Absent                                      NA      NA        
DIMM A10        N/A         Absent                                      NA      NA        
DIMM A11        N/A         Absent                                      NA      NA        
DIMM A12        N/A         Absent                                      NA      NA        
DIMM B1         Ok          Presence_Detected                           NA      NA        
DIMM B2         N/A         Absent                                      NA      NA        
DIMM B3         N/A         Absent                                      NA      NA        
DIMM B4         N/A         Absent                                      NA      NA        
DIMM B5         N/A         Absent                                      NA      NA        
DIMM B6         N/A         Absent                                      NA      NA        
DIMM B7         N/A         Absent                                      NA      NA        
DIMM B8         N/A         Absent                                      NA      NA        
DIMM B9         N/A         Absent                                      NA      NA        
DIMM B10        N/A         Absent                                      NA      NA        
DIMM B11        N/A         Absent                                      NA      NA        
DIMM B12        N/A         Absent                                      NA      NA        

Sensor Type : BATTERY
<Sensor Name>                   <Status>    <Reading>           <lc>        <uc>        
System Board CMOS Battery       Ok          Present             NA          NA          

Sensor Type : PERFORMANCE
<Sensor Name>                   <Status>    <State>        <lc>      <uc>      
System Board Power Optimized    Ok          Not Degraded   NA        NA        

Sensor Type : INTRUSION
<Sensor Name>                   <Intrusion>    <Status>       
System Board Intrusion          Closed         Power ON       

Sensor Type : REDUNDANCY
<Sensor Name>                   <Status>                 <Type>         
System Board Fan Redundancy     Full Redundant           Fan            

Sensor Type : SYSTEM PERFORMANCE
<Sensor Name>            <Status>    <Reading> <lc> <uc>  <lnc>[R/W]  <unc>[R/W]
[Key = iDRAC.Embedded.1#SystemBoardIOUsage]
System Board IO Usage    Ok             0%      NA  NA    NA  [N]      101% [Y]

[Key = iDRAC.Embedded.1#SystemBoardMEMUsage]
System Board MEM Usage   Ok             0%      NA  NA    NA  [N]      101% [Y]

[Key = iDRAC.Embedded.1#SystemBoardSYSUsage]
System Board SYS Usage   Ok             0%      NA  NA    NA  [N]      101% [Y]

[Key = iDRAC.Embedded.1#SystemBoardCPUUsage]
System Board CPU Usage   Ok             0%      NA  NA    NA  [N]      101% [Y]


Sensor Type : REMOVABLE MEDIA
<Sensor Name>                   <Status>       
VFLASH SD                        Absent         
                                         

这就是我想要的:

result = {"CPU1":"35C", "CPU2":"39C", "System Board Inlet Temp":"18C", "System Board Exhaust Temp":"29C"}

相反,我得到:

result = {'CPU1 Temp                     Ok      44C      3C   88C      NA [N]      NA [N], Temp Ok 44C 3C 88C NA [N] NA [N]': 'CPU1', 'CPU2 Temp                     Ok      47C      3C   88C      NA [N]      NA [N], Temp Ok 47C 3C 88C NA [N] NA [N]': 'CPU2', 'System Board Inlet Temp       Ok      27C      -7C  47C      3C [Y]      43C [Y], Board Inlet Temp Ok 27C -7C 47C 3C [Y] 43C [Y]': 'System', 'System Board Exhaust Temp     Ok      38C      3C   80C      8C [N]      75C [N], Board Exhaust Temp Ok 38C 3C 80C 8C [N] 75C [N]': 'System'}

这是我的代码:

def get_servers_temps():
    "Return A dict mapping from sensor name to sensor value"
    cmd = "racadm getsensorinfo"
    raw_data = os.popen(cmd).readlines()
    result = {}
    for line in raw_data:
            fields = line.split('| ')
            if " Temp" in fields[-1]:
                k1 = fields[0].strip()
                vfields = fields[-1].strip().split()
                value = vfields[0]
                k2 = ' '.join(vfields[1:])
                key = k1 + ", " + k2
                result[key]=value
    return result

我真的很感激任何帮助


Tags: boardtypestatusperformanceoksensorsystemtemp
1条回答
网友
1楼 · 发布于 2024-06-26 01:33:21

您可以使用re模块来解析字符串(regex101):

import re

txt = """
Sensor Type : TEMPERATURE
<Sensor Name>            <Status>    <Reading> <lc> <uc>  <lnc>[R/W]  <unc>[R/W]
[Key = iDRAC.Embedded.1#CPU1Temp]
CPU1 Temp                     Ok      35C      3C   88C      NA [N]      NA [N]

[Key = iDRAC.Embedded.1#CPU2Temp]
CPU2 Temp                     Ok      39C      3C   88C      NA [N]      NA [N]

[Key = iDRAC.Embedded.1#SystemBoardInletTemp]
System Board Inlet Temp       Ok      18C      -7C  47C      3C [Y]      43C [Y]

[Key = iDRAC.Embedded.1#SystemBoardExhaustTemp]
System Board Exhaust Temp     Ok      29C      3C   80C      8C [N]      75C [N]
"""

result = dict(re.findall(r"^(.*?)\s{2,}.*?(\d+C)", txt, flags=re.M))
print(result)

印刷品:

{'CPU1 Temp': '35C', 'CPU2 Temp': '39C', 'System Board Inlet Temp': '18C', 'System Board Exhaust Temp': '29C'}

编辑:

import re

txt = """
Sensor Type : POWER
<Sensor Name>                   <Status>                 <Type>         
PS1 Status                      Present                  AC             
PS2 Status                      Present                  AC             

Sensor Type : TEMPERATURE
<Sensor Name>            <Status>    <Reading> <lc> <uc>  <lnc>[R/W]  <unc>[R/W]
[Key = iDRAC.Embedded.1#CPU1Temp]
CPU1 Temp                     Ok      35C      3C   88C      NA [N]      NA [N]

[Key = iDRAC.Embedded.1#CPU2Temp]
CPU2 Temp                     Ok      39C      3C   88C      NA [N]      NA [N]

[Key = iDRAC.Embedded.1#SystemBoardInletTemp]
System Board Inlet Temp       Ok      18C      -7C  47C      3C [Y]      43C [Y]

[Key = iDRAC.Embedded.1#SystemBoardExhaustTemp]
System Board Exhaust Temp     Ok      29C      3C   80C      8C [N]      75C [N]



Sensor Type : FAN
<Sensor Name>                   <Status>    <Reading>   <lc>        <uc>        <PWM %>     <Type>      
System Board Fan1A              Ok          5640RPM     600RPM      NA          25%         Standard Performance
System Board Fan1B              Ok          5160RPM     600RPM      NA          25%         Standard Performance
System Board Fan2A              Ok          5520RPM     600RPM      NA          25%         Standard Performance
System Board Fan2B              Ok          5280RPM     600RPM      NA          25%         Standard Performance
System Board Fan3A              Ok          5520RPM     600RPM      NA          25%         Standard Performance
System Board Fan3B              Ok          5280RPM     600RPM      NA          25%         Standard Performance
System Board Fan4A              Ok          5520RPM     600RPM      NA          25%         Standard Performance
System Board Fan4B              Ok          5160RPM     600RPM      NA          25%         Standard Performance
System Board Fan5A              Ok          5520RPM     600RPM      NA          25%         Standard Performance
System Board Fan5B              Ok          5160RPM     600RPM      NA          25%         Standard Performance
System Board Fan6A              Ok          5520RPM     600RPM      NA          25%         Standard Performance
System Board Fan6B              Ok          5280RPM     600RPM      NA          25%         Standard Performance
System Board Fan7A              Ok          5640RPM     600RPM      NA          25%         Standard Performance
System Board Fan7B              Ok          5160RPM     600RPM      NA          25%         Standard Performance
System Board Fan8A              Ok          5520RPM     600RPM      NA          25%         Standard Performance
System Board Fan8B              Ok          5280RPM     600RPM      NA          25%         Standard Performance

Sensor Type : VOLTAGE
<Sensor Name>                   <Status>    <Reading>           <lc>        <uc>        
System Board DIMM PG            Ok          Good                NA          NA          
System Board NDC PG             Ok          Good                NA          NA          
System Board PS1 PG FAIL        Ok          Good                NA          NA          
System Board PS2 PG FAIL        Ok          Good                NA          NA          
System Board BP0 PG             Ok          Good                NA          NA          
System Board BP1 PG             Ok          Good                NA          NA          
System Board 1.8V SW PG         Ok          Good                NA          NA          
System Board 2.5V SW PG         Ok          Good                NA          NA          
System Board 5V SW PG           Ok          Good                NA          NA          
System Board PVNN SW PG         Ok          Good                NA          NA          
System Board VSB11 SW PG        Ok          Good                NA          NA          
System Board VSBM SW PG         Ok          Good                NA          NA          
System Board 3.3V B PG          Ok          Good                NA          NA          
CPU1 MEM012 VDDQ PG             Ok          Good                NA          NA          
CPU1 MEM012 VPP PG              Ok          Good                NA          NA          
CPU1 MEM012 VTT PG              Ok          Good                NA          NA          
CPU1 MEM345 VDDQ PG             Ok          Good                NA          NA          
CPU1 MEM345 VPP PG              Ok          Good                NA          NA          
CPU1 MEM345 VTT PG              Ok          Good                NA          NA          
CPU1 VCCIO PG                   Ok          Good                NA          NA          
CPU1 VCORE PG                   Ok          Good                NA          NA          
CPU1 FIVR PG                    Ok          Good                NA          NA          
CPU2 MEM012 VDDQ PG             Ok          Good                NA          NA          
CPU2 MEM012 VPP PG              Ok          Good                NA          NA          
CPU2 MEM012 VTT PG              Ok          Good                NA          NA          
CPU2 MEM345 VDDQ PG             Ok          Good                NA          NA          
CPU2 MEM345 VPP PG              Ok          Good                NA          NA          
CPU2 MEM345 VTT PG              Ok          Good                NA          NA          
CPU2 VCCIO PG                   Ok          Good                NA          NA          
CPU2 VCORE PG                   Ok          Good                NA          NA          
CPU2 FIVR PG                    Ok          Good                NA          NA          
PS1 Voltage 1                   Ok          232.00V             NA          NA          
PS2 Voltage 2                   Ok          230.00V             NA          NA          
System Board 3.3V A PG          Ok          Good                NA          NA          
CPU1 VSA PG                     Ok          Good                NA          NA          
CPU2 VSA PG                     Ok          Good                NA          NA          
System Board BP2 PG             Ok          Good                NA          NA          

Sensor Type : CURRENT
<Sensor Name>            <Status>    <Reading> <lc> <uc>  <lnc>[R/W]  <unc>[R/W]
[Key = iDRAC.Embedded.1#PS1Current1]
PS1 Current 1                 Ok      0.4Amps  NA   NA       0Amps [N]      0Amps [N]

[Key = iDRAC.Embedded.1#PS2Current2]
PS2 Current 2                 Ok      0.4Amps  NA   NA       0Amps [N]      0Amps [N]

[Key = iDRAC.Embedded.1#SystemBoardPwrConsumption]
System Board Pwr Consumption  Ok      130Watts NA   1794Watts 0Watts [N]      1638Watts [Y]


Sensor Type : PROCESSOR
<Sensor Name>                   <Status>    <State>             <lc>        <uc>        
CPU1 Status                     Ok          Presence_Detected   NA          NA          
CPU2 Status                     Ok          Presence_Detected   NA          NA          

Sensor Type : MEMORY
<Sensor Name>   <Status>    <State>                                     <lc>    <uc>      
DIMM A1         Ok          Presence_Detected                           NA      NA        
DIMM A2         N/A         Absent                                      NA      NA        
DIMM A3         N/A         Absent                                      NA      NA        
DIMM A4         N/A         Absent                                      NA      NA        
DIMM A5         N/A         Absent                                      NA      NA        
DIMM A6         N/A         Absent                                      NA      NA        
DIMM A7         N/A         Absent                                      NA      NA        
DIMM A8         N/A         Absent                                      NA      NA        
DIMM A9         N/A         Absent                                      NA      NA        
DIMM A10        N/A         Absent                                      NA      NA        
DIMM A11        N/A         Absent                                      NA      NA        
DIMM A12        N/A         Absent                                      NA      NA        
DIMM B1         Ok          Presence_Detected                           NA      NA        
DIMM B2         N/A         Absent                                      NA      NA        
DIMM B3         N/A         Absent                                      NA      NA        
DIMM B4         N/A         Absent                                      NA      NA        
DIMM B5         N/A         Absent                                      NA      NA        
DIMM B6         N/A         Absent                                      NA      NA        
DIMM B7         N/A         Absent                                      NA      NA        
DIMM B8         N/A         Absent                                      NA      NA        
DIMM B9         N/A         Absent                                      NA      NA        
DIMM B10        N/A         Absent                                      NA      NA        
DIMM B11        N/A         Absent                                      NA      NA        
DIMM B12        N/A         Absent                                      NA      NA        

Sensor Type : BATTERY
<Sensor Name>                   <Status>    <Reading>           <lc>        <uc>        
System Board CMOS Battery       Ok          Present             NA          NA          

Sensor Type : PERFORMANCE
<Sensor Name>                   <Status>    <State>        <lc>      <uc>      
System Board Power Optimized    Ok          Not Degraded   NA        NA        

Sensor Type : INTRUSION
<Sensor Name>                   <Intrusion>    <Status>       
System Board Intrusion          Closed         Power ON       

Sensor Type : REDUNDANCY
<Sensor Name>                   <Status>                 <Type>         
System Board Fan Redundancy     Full Redundant           Fan            

Sensor Type : SYSTEM PERFORMANCE
<Sensor Name>            <Status>    <Reading> <lc> <uc>  <lnc>[R/W]  <unc>[R/W]
[Key = iDRAC.Embedded.1#SystemBoardIOUsage]
System Board IO Usage    Ok             0%      NA  NA    NA  [N]      101% [Y]

[Key = iDRAC.Embedded.1#SystemBoardMEMUsage]
System Board MEM Usage   Ok             0%      NA  NA    NA  [N]      101% [Y]

[Key = iDRAC.Embedded.1#SystemBoardSYSUsage]
System Board SYS Usage   Ok             0%      NA  NA    NA  [N]      101% [Y]

[Key = iDRAC.Embedded.1#SystemBoardCPUUsage]
System Board CPU Usage   Ok             0%      NA  NA    NA  [N]      101% [Y]


Sensor Type : REMOVABLE MEDIA
<Sensor Name>                   <Status>       
VFLASH SD                        Absent       """


result = dict(re.findall(r"^(.*?) {2,}.*?(\d+C)", txt, flags=re.M))
print(result)

印刷品:

{'CPU1 Temp': '35C', 'CPU2 Temp': '39C', 'System Board Inlet Temp': '18C', 'System Board Exhaust Temp': '29C'}

相关问题 更多 >