Python统计目录下docx文件含空格字符数 除以65后导出至Excel
前置依赖安装
脚本依赖三个第三方库,先在终端执行以下命令安装:pip install python-docx pandas openpyxl
实现逻辑
- 遍历指定目标目录,自动过滤非docx格式文件,同时跳过Word运行时生成的
~$开头临时缓存文件,避免统计无效文件 - 逐文件读取内容,同时覆盖普通段落、内嵌表格内的所有文本,统计包含空格在内的总字符长度
- 按规则将总字符数除以65得到最终计算值,默认保留2位小数,可自行调整精度
- 所有文件处理完成后,将文件名、总字符数、最终计算值统一写入Excel文件保存
完整可运行代码
import os from docx import Document import pandas as pd # -------------------------- 配置项 按需修改 -------------------------- TARGET_DIR = r"C:\你的文档存放实际目录" # 替换为本地存放docx文件的目录路径 EXPORT_EXCEL_PATH = "docx字符统计结果.xlsx" # Excel结果导出路径 DIVISOR = 65 # 固定除数为65 # ------------------------------------------------------------------- def count_docx_chars(file_path: str) -> int: """统计单个docx文件含空格的总字符数,覆盖段落+表格内容""" total_chars = 0 doc = Document(file_path) # 统计普通段落字符 for para in doc.paragraphs: total_chars += len(para.text) # 统计表格内字符,避免内容遗漏 for table in doc.tables: for row in table.rows: for cell in row.cells: total_chars += len(cell.text) return total_chars if __name__ == "__main__": result_list = [] # 遍历目录筛选文件 for filename in os.listdir(TARGET_DIR): if filename.lower().endswith(".docx") and not filename.startswith("~$"): file_full_path = os.path.join(TARGET_DIR, filename) try: char_count = count_docx_chars(file_full_path) calc_value = round(char_count / DIVISOR, 2) # 保留2位小数,可自行修改 result_list.append({ "文件名": filename, "字符总数(含空格)": char_count, "最终计算值(字符数/65)": calc_value }) print(f"处理完成:{filename},字符数:{char_count},计算值:{calc_value}") except Exception as e: print(f"处理文件 {filename} 失败:{str(e)}") # 导出结果到Excel df = pd.DataFrame(result_list) df.to_excel(EXPORT_EXCEL_PATH, index=False, engine="openpyxl") print(f"全部处理完成,结果已保存至:{os.path.abspath(EXPORT_EXCEL_PATH)}")
使用注意事项
- 运行前先修改代码开头的
TARGET_DIR配置,替换为本地存放docx文件的实际目录,Windows路径建议加r前缀避免转义报错 - 脚本运行时会在控制台实时打印每个文件的处理进度,遇到加密、损坏无法读取的文件会打印错误信息,不会中断整体统计流程
- 导出的Excel默认保存在脚本运行的同级目录,如果需要自定义保存路径,修改
EXPORT_EXCEL_PATH配置即可 - 如果不需要统计表格内的字符,直接删除
count_docx_chars函数中遍历表格的代码段即可 - 注意:脚本仅支持
.docx格式文件,旧版.doc格式文件需要先手动转换为docx格式后再进行统计
内容的提问来源于stack exchange,提问作者Cyper-Python
相关产品推荐
相关产品推荐

