通过读取python中的属性文件来获取基于值的键?

通过读取python中的属性文件来获取基于值的键?,python,configparser,Python,Configparser,我有一个类似这样的属性文件“holder.txt”,它是key=value格式。这里的键是clientId,值是hostname p10=machineA.abc.host.com p11=machineB.pqr.host.com p12=machineC.abc.host.com p13=machineD.abc.host.com 现在,我想用python阅读这个文件,并获取相应的clientId,在那里运行这个python脚本。例如:如果python脚本在machineA.abc.hos

我有一个类似这样的属性文件“holder.txt”,它是
key=value
格式。这里的键是
clientId
,值是
hostname

p10=machineA.abc.host.com
p11=machineB.pqr.host.com
p12=machineC.abc.host.com
p13=machineD.abc.host.com
现在,我想用python阅读这个文件,并获取相应的
clientId
,在那里运行这个python脚本。例如:如果python脚本在
machineA.abc.host.com
上运行,那么它应该给我
p10
作为
clientId
。其他人也是如此

import socket, ConfigParser

hostname=socket.getfqdn()
print(hostname)

# now basis on "hostname" figure out whats the clientId 
# by reading "holder.txt" file

现在我已经使用了
ConfigParser
,但我的困惑是如何根据主机名获取键的值,即
clientId
?我们可以在python中执行此操作吗?

您需要将holder文件作为字典读取并存储在内存中:

mappings = {}
with open('holder.txt', 'r') as f:
    for line in f:
        mapping = line.split('=')
        mappings[mapping[1].rstrip()] = mapping[0]
然后,每次要从主机名获取clientId时,都要执行映射:

import socket, ConfigParser

hostname=socket.getfqdn()
clientId = mappings[hostname]

希望这能有所帮助。

到目前为止,您尝试了什么,出了什么问题?这可以在一个简单的循环中完成。任何原因都可以将配置文件存储为
=
而不是
=
。如果可以存储为后者,则可以使用
ConfigParser
直接读取它,然后只需
config[]
即可为您提供
clientid