求助:如何用字典中的value替换ini文件中key所对应的value
不想动脑子了{:5_100:}字典大概是这样的
字典的键值是文件名和ini文件的key组成的,如何将字典的value替换成ini中key对应的value,字典的键值由ini文件名冒号ini中key对应的名字组成,如何在字典和路径已知的情况下替换字典中文件所在ini的key的值
{'Customer_25.ini:m_pPanelName': '"/factory/atv/panel/7T862_A23/pq/25_50A23_N012301-008650-001/panel.ini"', 'Customer_25.ini:PQBinPathName': '"/factory/atv/panel/7T862_A23/pq/25_50A23_N012301-008650-001/"', 'Customer_25.ini:m_HighFrameRatePanelName': '"/factory/atv/panel/7T862_A23/pq/25_50A23_N012301-008650-001/UD_4K1K120.ini"', 'Customer_25.ini:bSupportPanelDemura': '1'} 您可以使用Python中的ConfigParser库来读取和修改INI文件。以下是一个示例代码,演示了如何使用字典中的值替换INI文件中对应键的值:
import configparser
# 定义字典
ini_dict = {
'Customer_25.ini:m_pPanelName': '"/factory/atv/panel/7T862_A23/pq/25_50A23_N012301-008650-001/panel.ini"',
'Customer_25.ini:PQBinPathName': '"/factory/atv/panel/7T862_A23/pq/25_50A23_N012301-008650-001/"',
'Customer_25.ini:m_HighFrameRatePanelName': '"/factory/atv/panel/7T862_A23/pq/25_50A23_N012301-008650-001/UD_4K1K120.ini"',
'Customer_25.ini:bSupportPanelDemura': '1'
}
# 定义INI文件路径
ini_file_path = '/path/to/your/inifile.ini'
# 创建 ConfigParser 对象
config = configparser.ConfigParser()
# 读取 INI 文件
config.read(ini_file_path)
# 遍历字典,并替换 INI 文件中对应键的值
for key, value in ini_dict.items():
section, option = key.split(':')
config.set(section, option, value)
# 将修改后的内容写回 INI 文件
with open(ini_file_path, 'w') as configfile:
config.write(configfile)
请将代码中的/path/to/your/inifile.ini替换为您实际的INI文件路径。此代码将读取指定的INI文件,然后根据字典中的键值对替换相应键的值,并将修改后的内容写回到INI文件中。
注意:在使用ConfigParser库之前,请确保已将其正确安装。您可以使用以下命令来安装ConfigParser库:
pip install configparser
请确保您的编辑器环境已正确配置,并具备适当的文件系统访问权限。 你可以使用Python的 configparser 模块来读取和修改 .ini 文件。这个模块可以帮助你读取 .ini 文件的配置信息,修改他们,然后保存。
假设你的字典名是 dict_to_replace ,字典的键名格式为 file.ini:key ,其中 file.ini 是要修改的文件名, key 是需要替换的key。这是一个可以做到这一点的Python脚本:
import configparser
import os
# 字典,包含要修改的文件和key,以及他们对应的新值
dict_to_replace = {
'Customer_25.ini:m_pPanelName': '"/factory/atv/panel/7T862_A23/pq/25_50A23_N012301-008650-001/panel.ini"',
'Customer_25.ini:PQBinPathName': '"/factory/atv/panel/7T862_A23/pq/25_50A23_N012301-008650-001/"',
'Customer_25.ini:m_HighFrameRatePanelName': '"/factory/atv/panel/7T862_A23/pq/25_50A23_N012301-008650-001/UD_4K1K120.ini"',
'Customer_25.ini:bSupportPanelDemura': '1'
}
# 初始化一个config对象
config = configparser.ConfigParser()
for dict_key in dict_to_replace.keys():
file_name, ini_key = dict_key.split(':')# 分割得到文件名和key
if not os.path.exists(file_name):# 检查文件是否存在
print(f"文件 {file_name} 不存在!")
continue
# 读取配置文件
config.read(file_name)
# 找到ini文件中key所在的section
for section in config.sections():
if config.has_option(section, ini_key):
config.set(section, ini_key, dict_to_replace)# 替换value
break# 找到了key,退出循环
# 将修改后的配置写回文件
with open(file_name, 'w') as configfile:
config.write(configfile)
在这个脚本中,我们遍历你提供的字典,对于字典中的每一个键值对,我们将字典的键分割成文件名和key,然后打开对应的文件,找到文件中对应的key并用字典的值进行替换,最后我们将修改后的配置信息写回文件。
请注意,这个脚本假设每个ini文件的key都是唯一的,也就是说同一个key只会出现在一个section中。如果同一个key可能出现在多个section中,这个脚本可能会只替换第一个出现的key的值。如果你需要替换所有出现的key的值,你可以删除 break 这一行,让脚本在所有的section中查找key。 本帖最后由 liyuping-fisher 于 2023-10-6 16:12 编辑
isdkz 发表于 2023-7-10 15:21
你可以使用Python的 configparser 模块来读取和修改 .ini 文件。这个模块可以帮助你读取 .ini 文件的配置信 ...
def refresh_data(self, model_dict, model_file):
# 传参分别为派生屏的模块字典和派生屏的路径
self.target_dict = model_dict
self.target_file = model_file
for filename in self.target_file:# 遍历文件名列表
if not os.path.exists(filename):# 检查文件是否存在
print(f"文件 {filename} 不存在!")
continue
# 初始化一个config对象
config = configparser.ConfigParser()
# 读取配置文件
config.read(filename)
# 找到ini文件中key所在的section
for dict_key in self.target_dict.keys():
file_name, ini_key = dict_key.split(':')# 分割得到文件名和key
for section in config.sections():
options = config.options(section)
for key, value in config.items(section):# 获取section中的键值对
if key.lower() == ini_key.lower():# 不区分大小写比较key
config.set(section, key, self.target_dict)# 替换value
# 将修改后的配置写回文件
with open(filename, 'w') as configfile:
config.write(configfile)
proc_dervie_data.refresh_data(new_factoryroot_data_dict, derive_factoryroot_file)
这样写了后替换的key变成了小写,字典内容是{'sys.ini:MAX_MODEL_INDEX': '43', 'sys.ini:MAX_PROJECT_ID': '43'} 替换后内容成了max_model_index = 43 max_project_id = 43
不但替换的key变成小写了,ini文件的所有key都变成了小写
页:
[1]