You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python脚本读取CBL文件生成LOC统计CSV无数据问题排查

解决CBL文件行数统计脚本CSV仅生成表头的问题

问题排查与修复方案

1. 检查CSV写入逻辑

终端能打印文件对象和行数,但CSV无数据,核心原因几乎都是数据写入代码未执行或写入流程有误:

  • 可能只编写了表头写入代码,循环处理文件时遗漏了writerow()/writerows()调用
  • 若在循环内重复以'w'模式打开CSV文件,每次都会清空文件,最终只剩最后一次写入的表头

修复示例代码:

import os
import csv

target_dir = "/指定目标目录路径"
output_csv = "cbl_loc_stat.csv"

# 先收集所有统计数据
loc_records = []

# 遍历目录下的CBL文件
for root, _, files in os.walk(target_dir):
    for filename in files:
        if filename.lower().endswith(".cbl"):
            full_path = os.path.join(root, filename)
            # 统计行数(可选:排除空行)
            with open(full_path, 'r', encoding='latin-1') as f:
                line_count = sum(1 for line in f if line.strip())
            print(f"{filename} - 行数:{line_count}")
            loc_records.append([filename, line_count])

# 统一写入CSV
with open(output_csv, 'w', newline='', encoding='utf-8') as csv_file:
    writer = csv.writer(csv_file)
    writer.writerow(["程序名称", "Lines of Code"])  # 写入表头
    writer.writerows(loc_records)  # 批量写入所有统计数据

2. 验证文件编码

COBOL(.CBL)文件常使用latin-1编码,若读取时编码错误可能导致隐性读取失败,虽然你终端有输出,但仍建议在打开CBL文件时指定正确编码,避免数据收集异常。

3. 确保文件缓冲区刷新

如果未使用with语句管理文件句柄,必须手动调用csv_file.close()或writer.flush(),否则数据可能滞留在内存缓冲区,未写入磁盘。

关键验证步骤

  • 在写入CSV前,打印print(loc_records)确认数据列表是否真的包含统计结果
  • 检查CSV文件路径是否正确,避免写入到了其他目录

内容的提问来源于stack exchange,提问作者6708

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 07:50:28