通过读取python中的属性文件来获取基于值的键?
我有一个类似这样的属性文件“holder.txt”,它是通过读取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
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