liyuping-fisher 发表于 2023-5-5 11:08:38

python3.11怎么获取ini文件的块状数据

比如ini文件如下

m_pCountry_Lang_File = "/vendor/tvconfig/apollo/countrylang.ini";


#MISC section define that the INI is not only one module use.
m_pCustomizationFunc_File = "/vendor/tvconfig/apollo/CustomizationFunc.ini";
m_pCustomization3RDFunc_File = "/vendor/tvconfig/apollo/Customization3RDFunc.ini";


#Auto Sleep
m_pSleepTimeCfg_File = "/vendor/tvconfig/apollo/sleeptime_cfg.ini";
m_pADV_SOUND_SYSTEM_File = "/vendor/tvconfig/apollo/ADV_SOUND_SYSTEM.ini";
m_pConfigDefaultValue_File = "/vendor/tvconfig/apollo/ConfigDefaultValue.ini";
m_pSpecialCountryScanDef_File ="/vendor/tvconfig/apollo/SpecialCountryScanDef.ini";
m_pColTemEx_File = "/vendor/tvconfig/apollo/ColTemEx.ini";


m_pHdmiMap_File = "/vendor/tvconfig/apollo/hdmi_map.ini";


m_pboot_cfg_File = "/vendor/tvconfig/apollo/boot_cfg.ini";

如何通过已知的等获取他们下面的一整块数据,并且整块数据做处理只显示等号前面的ky和等号和分号之间的value值,并将块头写入excel的前一行,后一行写处理后的一整块数据,比如如下在excel显示

isdkz 发表于 2023-5-5 11:26:25

要实现这个功能,你可以使用Python的 configparser 库来解析INI文件,然后处理并将数据写入Excel文件。以下是一个示例代码:

import configparser
import os
import openpyxl

# 解析INI文件
config = configparser.ConfigParser()
config.read('example.ini')

# 创建Excel工作簿
workbook = openpyxl.Workbook()
sheet = workbook.active

# 遍历INI文件的sections
row = 1
for section in config.sections():
    # 只处理已知的sections
    if section in ['acfg', 'HDMI']:
      # 将section名写入Excel的前一行
      sheet.cell(row=row, column=1, value=section)
      row += 1

      # 遍历当前section的键值对
      for key, value in config.items(section):
            # 只显示等号前面的key和等号和分号之间的value值
            key = key.split('=').strip()
            value = value.split(';').strip()

            # 将处理后的数据写入Excel
            sheet.cell(row=row, column=1, value=f"{key} = {value}")
            row += 1

# 保存Excel文件
workbook.save('output.xlsx')


上述代码会解析给定的INI文件,提取已知section(如 和 )及其下面的键值对。然后,它将section名写入Excel的前一行,处理后的键值对写入后一行。最后,将结果保存到名为 output.xlsx 的Excel文件中。

liyuping-fisher 发表于 2023-5-5 11:52:31

isdkz 发表于 2023-5-5 11:26
要实现这个功能,你可以使用Python的 configparser 库来解析INI文件,然后处理并将数据写入Excel文件。以下 ...

感谢提供思路,经过您的思路和我查的信息,我用的是如下的信息,谢谢~
import os
import openpyxl
from openpyxl.worksheet.datavalidation import DataValidation

# 解析INI文件
config = configparser.ConfigParser()
config.read('ini文件')

# 创建Excel工作簿
workbook = openpyxl.Workbook()
sheet = workbook.active

# 遍历INI文件的sections
row = 1
for section in config.sections():
    # 只处理已知的sections
    if section in ['acfg', 'HDMI']:
      # 将section名写入Excel的前一行
      sheet.cell(row=row, column=1, value=section)

      # 遍历当前section的键值对,只处理第一个键值对
      kv_dict = dict(config.items(section))
      first_kv = list(kv_dict.items())

      # 在第一个空单元格添加数据验证
      validation_row = row
      while sheet.cell(row=validation_row, column=2).value is not None:
            validation_row += 1
      if validation_row > row:
            validation = DataValidation(type='list', formula1='"True,False"', allow_blank=True)
            sheet.add_data_validation(validation)
            validation.add(f'B{validation_row}')

      # 将处理后的数据写入Excel,包括section名称和第一个键值对
      sheet.cell(row=validation_row, column=2, value=f"{section}.{first_kv} = {first_kv}")

      # 遍历当前section的其余键值对,将其添加到单元格中
      for key, value in kv_dict.items():
            # 跳过第一个键值对,因为已经处理过了
            if key == first_kv:
                continue
            sheet.cell(row=row, column=2).value += f"\n{section}.{key} = {value}"

      # 设置单元格换行
      sheet.cell(row=row, column=2).alignment = openpyxl.styles.Alignment(wrap_text=True)

      # 计算行数,以便写入下一个section的数据
      row = validation_row + 1

# 保存Excel文件
workbook.save('output.xlsx')
页: [1]
查看完整版本: python3.11怎么获取ini文件的块状数据