PAYATHON 2026

如何用 Python 遍历服务器目录并将调查数据汇总为 Markdown 或 txt?

数据小陈

可以用 Python 完成。遍历目录、输出 Markdown 或 txt 文件都可以使用标准库;读取和汇总调查数据时,再根据文件格式选择库。先确定需要的是选项计数、均值等统计结果,还是开放式回答的文字摘要,二者的处理方式不同。

应该选择哪些库?

处理环节可选工具适用情况
遍历目录pathlib查找文件、筛选扩展名、递归处理子目录
读取 CSVcsv按行读取、选项计数等简单任务
表格分析pandas分组统计、缺失值处理、合并多份表格
读取 Excelpandas 配合 openpyxl读取 .xlsx 调查结果
读取 Wordpython-docx提取 .docx 中的段落和表格
读取 PDFpypdf提取 PDF 中已有的文字;扫描件通常还需要 OCR
输出结果Path.write_text()写入 Markdown 或 txt,无须专门的 Markdown 库

原问题没有说明文件格式和调查字段,暂时无法确定具体的读取方案。如果数据已经是 CSV,建议先用 pathlib、csv 和 collections.Counter 完成一个小脚本。

CSV 调查数据的实现示例

下面的示例假设调查结果保存为 UTF-8 编码的 CSV,每份文件都有一个名为 satisfaction 的选项字段。程序递归读取目录,统计每个文件的记录数、该字段的空值数和各选项出现次数,再写入 Markdown。

satisfaction 只是示例字段,需要替换为实际列名。

from pathlib import Path
from collections import Counter
import csv
import json

source_dir = Path('/path/to/surveys')
output_file = Path('/path/to/reports/summary.md')
column = 'satisfaction'

if not source_dir.is_dir():
    raise NotADirectoryError(source_dir)

summaries = []

for path in sorted(source_dir.rglob('*.csv')):
    try:
        with path.open(encoding='utf-8-sig', newline='') as file:
            reader = csv.DictReader(file)
            if column not in (reader.fieldnames or []):
                print(f'跳过 {path}:缺少字段 {column}')
                continue

            counts = Counter()
            total = 0
            missing = 0

            for row in reader:
                total += 1
                value = (row.get(column) or '').strip()
                if value:
                    counts[value] += 1
                else:
                    missing += 1

        summaries.append({
            'file': str(path.relative_to(source_dir)),
            'records': total,
            'missing': missing,
            'counts': dict(counts.most_common()),
        })
    except (OSError, UnicodeError, csv.Error) as error:
        print(f'读取失败 {path}:{error}')

output_file.parent.mkdir(parents=True, exist_ok=True)
report = json.dumps(summaries, ensure_ascii=False, indent=2)
output_file.write_text(
    '# 调查数据汇总\n\n```json\n' + report + '\n```\n',
    encoding='utf-8',
)
print(f'已写入 {output_file},成功汇总 {len(summaries)} 个文件')

脚本只依赖 Python 标准库。生成的 Markdown 用 JSON 代码块展示统计结果,方便检查数据。如果需要 txt,可以将输出路径改为 .txt,直接写入 report。

如果需要汇总开放式回答

上面的代码适合单选题等分类字段,不会生成自然语言摘要。对于“还有哪些建议”这类自由文本,逐个统计完整回答通常没有多少帮助。

可以先提取相关字段,去除空白回答,再按调查主题归类,统计常见意见并保留少量代表性回答。如果使用文本摘要算法或语言模型,还需要核对摘要是否遗漏了少数意见,或把个别回答误写成普遍结论。文件读取库本身不会完成这些判断。

使用时需要注意什么?

  • 确认数据约定:示例按逗号分隔的 CSV 读取,使用 UTF-8 编码;如果实际文件的分隔符、编码或字段名不同,需要调整读取参数。
  • 确认字段含义:同名字段在不同调查中可能有不同选项或量表,不能直接合并统计。多选题也需要先按实际存储规则拆分选项。
  • 检查失败记录:示例会打印跳过或读取失败的文件,生成报告后应检查这些提示。输出成功不代表所有源文件都已处理。
  • 控制敏感信息:报告只保留需要的统计和摘录;若使用外部摘要服务,先确认调查数据是否允许上传。

备注:内容仅供参考。