Skip to main content
 首页 » 编程设计

python之如何从 cfg 文件中检索键值对

2025年05月04日14lautakyan007

我是 python 新手。

我有一个配置文件,如下所示,顺序相同。我需要从配置文件中检索键值对,并将在我的脚本中使用这些值

# Name and details  
(  
 { group => 'abc', 
   host => 'pqr.com', 
   user => 'anonymous', 
   src => '/var/tmp', 
   dest => '/tmp', 
},  
{ group => 'abc', 
  host =>'pqr.com', 
  user => 'anonymous', 
  src => '/tmp' 
  dest => '/var/tmp' 
},  
{ group => 'pqr', 
  host =>'abc.com', 
  user => 'xyz', 
  src => '/home/pp', 
  dest => '/var/tmp', 
},  
{ group => 'xyz', 
  host =>'p.com', 
  user => 'x', 
  src => '/home/', 
  dest => '/tmp', 
}  

)

每个

{ 
 
} 

被认为是一个 block ..Group,user,host是唯一的,也是重复的。 我必须阅读和解析配置文件并显示键值对。请帮忙。

Key : group,Value : 'abc'(say) 
key : host ,Value :'pqr.com' 
Key : user, Value :'anonymous' 
Key : src,Value :'/var/tmp', 
key : dest,Value : '/tmp' 

谢谢,


我编写了显示键和值的代码,将 cfg 文件(如上所示)作为输入。

idx = 0 
dictList = [] 
while True: 
try: 
start = config.index("{", idx) 
end = config.index("}", start+1) 
slice = config[start+1:end-1] 
sliceList = [s.strip() for s in slice.split(",") if s.strip()] 
dd = {} 
for item in sliceList: 
key, value = [s.strip() for s in item.split("=>")] 
print key, value 

在显示键、值的同时输出

key 'value' 
group 'abc' 
host 'pqr.com' 
user 'ananymous' 
src '/use/tmp 

现在的问题是,如何显示一个键对应的值。 例如:打印组 - 应该显示 abc 打印主机应显示pqr.com等。

请您参考如下方法:

您可能需要解析它,这里有一个关于如何执行此操作的小示例。

import re 
def parse(data): 
    '''Parse data block, return itertator on objects inside''' 
    for block in re.finditer('{[^}]*}', data, re.M):  # Split to objects 
        obj = {} 
        for match in re.finditer("([a-z]+) => '([^']*)'", block.group()): 
            obj[match.group(1)] = match.group(2) 
        yield obj 

现在你有两个问题:)