import csv def format_value(val): """格式化值:整数保持原样,小数保留3位""" try: num_val = float(val) if num_val.is_integer(): return int(num_val) return round(num_val, 3) except ValueError: return val def csv_to_ini(csv_file, ini_file): """ 将CSV文件转换为INI格式 :param csv_file: 输入的CSV文件路径 :param ini_file: 输出的INI文件路径 """ try: with open(csv_file, 'r', newline='', encoding='utf-8') as csv_input: # 读取CSV文件 reader = csv.DictReader(csv_input) # 确定所需字段 required_fields = ['name', 'x', 'y', 'z', 'u', 'v', 'w', 'id', 'order', 'lineid', 'status', 'linetype'] with open(ini_file, 'w', encoding='utf-8') as ini_output: # 处理每一行数据 for row in reader: # 检查是否所有必需字段都存在 if not all(field in row for field in required_fields): missing = [field for field in required_fields if field not in row] print(f"警告: 行 {reader.line_num} 缺少字段 {', '.join(missing)},跳过该行") continue # 写入section头 ini_output.write(f"[{row['name']}]\n") # 写入数值字段 for field in required_fields[1:]: # 跳过name字段 formatted = format_value(row[field]) ini_output.write(f"{field} = {formatted}\n") # 区块间添加空行 ini_output.write("\n") print(f"转换成功!INI文件已保存至: {ini_file}") except Exception as e: print(f"处理过程中出错: {str(e)}") if __name__ == "__main__": # 在此输入您的文件路径 input_csv = "D:/aa.csv" # 替换为实际CSV文件路径 output_ini = "D:/output.ini" # 输出的INI文件路径 csv_to_ini(input_csv, output_ini)