用Python直接获取Word文档页数、字数、段落数、节数等信息

计算 Word 文档的页数、字数等信息是出版、学术和内容管理等领域的一项基本任务。准确的页数和字数对于评估文档长度、估算印刷成本、分析文本复杂性以及确保符合格式化指南至关重要。逐个预览文档查看相关信息是非常麻烦的事情,我们可以在不预览文档的情况下,用Python实现快速批量地获取文档中的页数、字数、段落数、节数、词数等关键信息,实现文档的高效管理,简化相关任务流程。

文章目录

    • 获取Word文档页数、字数、字符数、段落数以及带空格的字符数
    • 用Python计算Word文档节的数量

本文所使用的方法需要用到Spire.Doc for Python,可从官网获取通过PyPI:pip install Spire.Doc

获取Word文档页数、字数、字符数、段落数以及带空格的字符数

API中提供的 Document.BuiltinDocumentProperties 属性可以获取文档中的一些内置属性,如页数、词数、字符数等信息。以下是操作步骤:

  1. 导入所需库:spire.docspire.doc.common 用于处理 Word 文档,os 用于操作系统文件及目录操作。
  2. 定义待遍历的文件夹路径。
  3. 创建 Document 类的一个实例 doc,用于加载和操作 Word 文档。
  4. 使用 os.walk() 遍历指定文件夹及其子文件夹中的所有文件。
  5. 对于遍历到的每个文件:
    • 检查文件扩展名是否为 .doc.docx,若是则表示为 Word 文档。
    • 使用 os.path.join() 组合完整文件路径,并使用 doc.LoadFromFile() 方法加载该 Word 文档。
    • 调用 doc.UpdateWordCount() 更新文档的字数统计信息,确保统计数据准确。
    • 获取文档的内置属性,存储在 builtinProperties 变量中。
    • 从内置属性中分别提取文档的页数(PageCount)、段落数(ParagraphCount)、字符数(CharCount)、包含空格的字符数(CharCountWithSpace)和字数(WordCount)。
    • 将这些统计信息与对应的文件名一起打印出来。
  6. 在遍历并处理完所有 Word 文档后,调用 doc.Close() 关闭文档,释放资源。

代码示例

from spire.doc import *
from spire.doc.common import *
import os

# 定义文件夹路径
folderPath = "Documents"

# 创建Document实例
doc = Document()

# 遍历文件夹中的文档
for root, dirs, files in os.walk(folderPath):
    for file in files:
        # 判断文件是否为Word文档
        if file.endswith(('.doc', '.docx')):
            # 载入Word文档
            doc.LoadFromFile(os.path.join(root, file))
            # 更新字数统计(确保字数统计是最新的)
            doc.UpdateWordCount()
            # 获取文档内置属性
            builtinProperties = doc.BuiltinDocumentProperties
            # 获取页数
            pageCount = builtinProperties.PageCount
            # 获取段落数
            paragraphCount = builtinProperties.ParagraphCount
            # 获取字符数
            charCount = builtinProperties.CharCount
            # 获取包含空格的字符数
            charCountWithSpaces = builtinProperties.CharCountWithSpace
            # 获取字数
            wordCount = builtinProperties.WordCount
            # 输出结果
            print(f"文档——{file} 页数为:", pageCount)
            print(f"文档——{file} 段落数为:", paragraphCount)
            print(f"文档——{file} 字符数为:", charCount)
            print(f"文档——{file} 包含空格的字符数为:", charCountWithSpaces)
            print(f"文档——{file} 字数为:", wordCount)
doc.Close()

输出结果
Python获取Word文档页数 字数 字符数 段落数

用Python计算Word文档节的数量

节的计数不被统计在内置属性中,但我们可以直接使用 Document.Sections.Count 属性计算节的数量。以下是操作步骤:

  1. 导入所需模块:spire.docspire.doc.common 用于处理 Word 文档,os 用于操作系统文件及目录操作。
  2. 定义待遍历的文件夹路径。
  3. 创建 Document 类的实例 doc,用于加载和操作 Word 文档。
  4. 使用 os.walk() 遍历指定文件夹及其子文件夹中的所有文件。
  5. 对于遍历到的每个文件:
    • 检查文件扩展名是否为 .doc.docx,如果是,则表示为 Word 文档。
    • 使用 os.path.join() 组合得到文件的完整路径,并使用 doc.LoadFromFile() 方法加载该 Word 文档。
    • 从文档对象 doc 中获取文档中节(section)的数量,存储在变量 sectionCount 中。
    • 将文档名和节的数量一同打印出来,展示文档内部的结构信息。
  6. 在遍历并处理完所有匹配的 Word 文档后,调用 doc.Close() 方法关闭文档,释放资源。

代码示例

from spire.doc import *
from spire.doc.common import *
import os

# 定义文件夹路径
folderPath = "Documents"

# 创建Document实例
doc = Document()

# 遍历文件夹中的文件
for root, dirs, files in os.walk(folderPath):
    for file in files:
        # 判断文件是否为Word文档
        if file.endswith(('.doc', '.docx')):
            # 载入Word文档
            doc.LoadFromFile(os.path.join(root, file))
            # 获取文档中节的数量
            sectionCount = doc.Sections.Count
            # 输出结果
            print(f"文档——", file, " 节数为:", sectionCount)
doc.Close()

输出结果
Python获取Word文档节数

本文介绍了如何使用Python获取Word文档页数、字数、字符数、段落数、节数以及带空格的字符数。
更多Spire.Doc for Python教程
申请免费License

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/468771.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

产品说明书VS产品规格书:有什么区别

产品说明书和产品规格书是两个不同的文档,虽然它们都涉及到产品的描述和细节,但侧重点和用途有所不同。 | 内容侧重点不同 产品说明书更侧重于向用户解释产品的使用方法和操作细节。它就像是一本用户手册,告诉用户如何安装、操作、维护和保养…

记录收支明细,轻松导出表格,让家庭财务一目了然!

随着生活节奏的加快,家庭财务管理变得越来越重要。想要掌握家庭的收支情况,合理规划预算,却常常被琐碎的账目和复杂的表格困扰?别担心,我们为您带来一款全新的家庭财务管理工具,让您轻松记录收支明细&#…

【教程】APP加固的那些小事情

摘要 APP加固是保护APP代码逻辑的重要手段,通过隐藏、混淆、加密等操作提高软件的逆向成本,降低被破解的几率,保障开发者和用户利益。本文将介绍APP加固常见失败原因及解决方法,以及处理安装出现问题的情况和资源文件加固策略选择…

手把手教你搭建雾锁王国Enshrouded服务器

免费自建雾锁王国Enshrouded服务器,先领取阿里云300元无门槛代金券,然后在雾锁王国Enshrouded专题页一键部署,不需要基础,鼠标点选即可10秒钟创建一台雾锁王国游戏服务器,超简单,阿里云服务器网aliyunfuwuq…

Redis @type的一个坑

redis中type导致取数据解析报错 java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to 新建一个对象存入redis中,对象中会出现一个字段type LoginUser user new LoginUser () ...... redisTemplate.opsForValue().set(key, user)存…

k8s集群部署elk

一、前言 本次部署elk所有的服务都部署在k8s集群中,服务包含filebeat、logstash、elasticsearch、kibana,其中elasticsearch使用集群的方式部署,所有服务都是用7.17.10版本 二、部署 部署elasticsearch集群 部署elasticsearch集群需要先优化…

洗涤杂质气体的仪器-PFA洗涤瓶

PFA洗气瓶是一种洗去气体中杂质的仪器,是将不纯气体通过选定的适宜液体介质鼓泡吸收(溶解或由于发生化学反应),从而洗去杂质气体,以达净化气体的目的。在有可燃性气源的实验装置中,洗气瓶也可起到安全瓶的作…

基于Spring Boot框架的玩具销售系统的设计与实现

摘 要 随着信息时代的来临,过去的传统管理方式缺点逐渐暴露,对过去的传统管理方式的缺点进行分析,采取计算机方式构建玩具销售系统。本文通过课题背景、课题目的及意义相关技术,提出了一种玩具信息、购买订单、退货申请、换货申请…

AI算力池化赋能企业大模型价值探索

1. 大语言模型企业落地中的算力痛点 随着人工智能技术的飞速发展,自然语言处理(NLP)成为了热门的研究领域之一。在这一领域中,大语言模型(Large Language Models)凭借其强大的语言理解和生成能力&#xff…

每日OJ题_牛客HJ75 公共子串计算(IO型OJ)

目录 牛客HJ75 公共子串计算 解析代码 牛客HJ75 公共子串计算 公共子串计算_牛客题霸_牛客网 解析代码 #include <iostream> using namespace std; int main() {string str1 "", str2 "";cin >> str1 >> str2;int n1 str1.size()…

性能测试-Jmeter常用元件基础使用

一、Jmeter元件 #线程组 添加HTTP请求 #配置元件 配置元件内的元件都是用于进行初始化的东西 #监听器 监听器主要是用来获取我们使用取样器发送请求后的响应数据相关信息 #定时器 定时器主要用来控制我们多久后执行该取样器&#xff08;发送请求&#xff09; #前置处理器 前置处…

测试工具分享:高效完成测试工作!

说在前头 在社会上&#xff0c;特别是技术圈&#xff0c;大家会有刻板印象&#xff1a;测试工作的含金量不高。因为大家觉得测试不重要&#xff0c;导致给测试的薪水也偏低&#xff1b;这又反向导致好的人才不想来测试行业&#xff0c;测试从业人员的平均水平、工作体现的价值…

【ArcPy】栅格数据渲染

import arcpy # 输入数据 inRaster arcpy.Raster(r"C:\测试数据\dem\归一化处理.tif") # 用线性拉伸和NDVI配色方案渲染栅格 rendered_raster arcpy.Render(inRaster, rendering_rule{min: 0, max: 0.8}, colormapNDVI) #栅格单独一行可将栅格数据直接显示 rendere…

打开磁盘清理工具的9种方法,总有一种适合你

前言 你可以在Windows 10和11上使用许多第三方磁盘清理工具来进行清理。但是,别忘了Windows包含自己的磁盘清理工具,你可以使用该工具释放硬盘存储空间。一些第三方替代方案可能有更广泛的清理选项和功能,但磁盘清理仍然是消除多余文件的完美工具。 每个用户都应该不时地进…

使用 Python 编写网络爬虫:从入门到实战

网络爬虫是一种自动化获取网页信息的程序&#xff0c;通常用于数据采集、信息监控等领域。Python 是一种广泛应用于网络爬虫开发的编程语言&#xff0c;具有丰富的库和框架来简化爬虫的编写和执行过程。本文将介绍如何使用 Python 编写网络爬虫&#xff0c;包括基本原理、常用库…

LLM流式方案解决方案和客户端解决方案

背景 接上一篇《LLM大模型统一封装接口解决方案》架构确定后&#xff0c;流式方案非常规请求&#xff0c;需要特殊处理。 本解决方案就是针对上一篇中所需要的流式&#xff08;打字机效果进行编码&#xff09; 什么是SSE SSE&#xff08;Server-Sent Events&#xff0c;服务器发…

鸿蒙App开发学习 - TypeScript编程语言全面开发教程(上)

背景 根据鸿蒙官方的说明&#xff1a; ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript&#xff08;简称TS&#xff09;生态基础上做了进一步扩展&#xff0c;继承了TS的所有特性&#xff0c;是TS的超集。因此&#xff0c;在学习ArkTS语言之前&#…

蓝牙系列十七:BLE安全机制--地址类型与LL层设备过滤

上一篇我们讲了BLE的安全机制&#xff0c;引入白名单和安全地址的感念&#xff0c;使用白名单来过滤安全设备是BLE种最简单的方法。这一篇我们来详细讲一下这些概念。 一、地址类型 学习资料&#xff1a;官方手册 Vol 6: Core System Package [Low Energy Controller volume…

蓝桥杯学习笔记 单词分析

试题 G: 单词分析 时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分 [问题描述] 小蓝正在学习一门神奇的语言&#xff0c;这门语言中的单词都是由小写英文字母组成&#xff0c;有些单词很长&#xff0c;远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词&#xf…

Spring 3升级指导

一&#xff0c;背景 Spring开源多年&#xff0c;已经经过了多次的升级迭代&#xff0c;最新的已经到Spring 6了&#xff0c;但是估计大家最常用的还是Spring 2.x。 最近项目准备升级到Spring 3&#xff0c;下面简单记录一下升级的改动点。 二&#xff0c;官方指导 1&#x…