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

news2024/9/20 1:14:23

计算 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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Day74:WEB攻防-机制验证篇重定向发送响应状态码跳过步骤验证码回传枚举

目录 验证码突破-回传显示&规律爆破 某目标回显显示 某APP验证码爆破 验证目标-重定向用户&重定向发送 某CMS重定向用户 某CMS重定向发送 验证逻辑-修改响应包&跳过步骤URL 某APP修改响应包 某APP跳过步骤URL 实战SRC验证逻辑挖掘分享案例 短信验证码回…

集成学习 | 集成学习思想:Boosting

目录 二. Boosting思想1. Adaboost 算法1.1 Adaboost算法构建流程1.2 sklearn库参数说明 2. Gradient Boosting 算法2.1 Gradient Boosting算法构建流程2.2 Gradient Boosting算法的回归与分类问题2.2.1 Gradient Boosting回归算法均方差损失函数绝对误差损失函数 2.2.2 Gradie…

使用 Dify 和 AWS Bedrock 玩转 Anthropic Claude 3

本篇文章,聊聊怎么比较稳定的使用 Anthropic Claude 3,以及基于目前表现非常好的模型,来做一些有趣的 AI Native 小工具。 写在前面 在实际体验了半个多月,月初上线的 Anthropic Claude Pro 后,发现 Claude 3 系列模…

不同的Git仓库单独设置用户名和邮件地址

最近使用公司电脑将自己的一个私人项目推送到远程仓库,仓库显示的公司邮箱地址。因为设置了全局的username和usermail,这样就比较尴尬了。但是又不能频繁来回改用户信息,那么请看下面如何单独设置仓库的用户信息,让不同的仓库展示…

怎么轻松制作证件照?推荐这三款制作工具!

在日常生活中,我们经常需要制作各种证件照,如身份证、护照、驾驶证等。为了帮助大家快速、便捷地制作证件照,我将在本文中推荐三款优秀的证件照制作工具,包括国内外的软件,满足不同用户的需求。1.水印云 水印云是一款国…

自动推送个人站点到百度收录

自动推送个人站点到百度收录 准备 验证站点 访问百度收录官网注册帐号选择用户中心-站点管理 在“站点管理”里面点击“添加站点”,填写你的站点地址(支持子域名) 根据你的站点的内容、类型勾选站点属性 点击“验证站点”。 两种方式都可以…

学点儿Java_Day6_面向对象:类、封装、构造方法

1 类 1.1 定义 类:对现实世界中事物的抽象。Student 对象:现实世界中具体的个体。张三、李四 这些具体的学生 面向对象的特征:抽象、封装、继承、多态 OOP: Object Oriented Programming 类和对象的总结: 1、现实世界都是由很多…

GO-初识包管理

初识包管理,知道项目中文件和文件夹之间的关系 输出,代码,在go编译器运行时会显示在屏幕中 初识数据类型 整型,数字。例如:1、2、3、4 字符串类型,表示文本信息的。例如:“张三”“李四” 布尔类型&#x…

windows docker

写在前面的废话 最近在学习riscv的软件相关内容,倒是有别人的sg2042机器可以通过ssh使用,但是用起来太不方便了,经常断掉,所以想着在自己的机器上跑一跑riscv的操作系统。最常见的有两种方法吧,第一个就是qemu&#xf…

x-zse-96,android端,伪dex加固,so加固,白盒AES,字符串加密

x-zse-96,android端,伪dex加固,so加固,白盒AES,字符串加密 上一篇某招聘软件的sig及sp参数被和谐掉了,所以懂得都懂啊! 因为web的api没有那么全,所以来看了下app的,ios的防护几乎没有,纸糊的一样,android端的有点复杂了,到最后我也没能完整的实现整个加密过程,我也只复现到DF…

探讨苹果 Vision Pro 的空间视频(术语辨析、关键技术、思考)

背景:一位资深视频技术从业者在 Pixvana 工作,积累了丰富的捕获、处理、编码、流传和播放空间媒体经验。 一、术语 空间视频:传统的 3D 视频,呈矩形,包含左右眼视图,如 iPhone15 Pro 和 Vision Pro 可录制。沉浸式视频:非矩形的环绕式视频体验,通常由两个或多个传感器…

亮数据代理IP轻松解决爬虫数据采集痛点

文章目录 一、爬虫数据采集痛点二、为什么使用代理IP可以解决?2.1 爬虫和代理IP的关系2.2 使用代理IP的好处 三、亮数据代理IP的优势3.1 IP种类丰富3.1.1 动态住宅代理IP3.1.2 静态住宅代理IP3.1.3 机房代理IP3.1.4 移动代理IP 3.2 高质量IP全球覆盖3.3 超级代理服务…

​《个人信息出境标准合同办法》第四条中的100万、10万、1万是指人数还是个人信息的条数?​

《个人信息出境标准合同办法》第四条中的100万、10万、1万是指人数还是个人信息的条数? 本条中的3个数字均指的是人数,不是条数。举个极端的例子,从目前的规定来说,如果某企业的国内用户人数超过了100万,即便向境外接收…

由浅到深认识Java语言(11):封装

该文章Github地址:https://github.com/AntonyCheng/java-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.c…

容器中的大模型(三)| 利用大语言模型:容器化高效地部署 PDF 解析器实践...

作者:宋文欣,智领云科技联合创始人兼CTO 01 简介 大语言模型(LLMs)正逐渐成为人工智能领域的一颗璀璨明星,它们的强大之处在于能够理解和生成自然语言,为各种应用提供了无限可能。为了让这些模型更好地服务…

Android 10.0 app获取当前已连接wifi列表ssid和密码功能实现

1.前言 在10.0的系统定制化开发中,在一些关于wifi的定制中,有产品需求app中要求获取当前连接wifi和密码功能,在系统原生wifi中 是禁止获取wifi连接的密码的,所以就需要对wifi模块进行一部分的修改,来满足app中获取wifi的ssid和密码功能,接下来就来 实现这个功能 如图:…

idea 开发serlvet篮球秩序册管理系统idea开发mysql数据库web结构计算机java编程layUI框架开发

一、源码特点 idea开发 java servlet 篮球秩序册管理系统是一套完善的web设计系统mysql数据库 系统采用serlvetdaobean mvc 模式开发,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 servlet 篮…

【MySQL】数据库的基础概念

👦个人主页:Weraphael ✍🏻作者简介:目前学习计网、mysql和算法 ✈️专栏:MySQL学习 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论&#x1f4ac…

流畅的 Python 第二版(GPT 重译)(一)

前言 计划是这样的:当有人使用你不理解的特性时,直接开枪打死他们。这比学习新东西要容易得多,不久之后,活下来的程序员只会用一个容易理解的、微小的 Python 0.9.6 子集来编写代码 。 Tim Peters,传奇的核心开发者&am…

Expert Prompting-引导LLM成为杰出专家

ExpertPrompting: Instructing Large Language Models to be Distinguished Experts 如果适当设计提示,对齐的大型语言模型(LLM)的回答质量可以显著提高。在本文中,我们提出了ExpertPrompting,以激发LLM作为杰出专家回…