如何在 Linux 上使用 Python 读取 word 文件信息
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在 Linux 上使用 Python 读取 word 文件信息相关的知识,希望对你有一定的参考价值。
请注意,所有的程序在它们第一行都是#!/usr/bin/env/python,也就是说,我们想要Python的解释器来执行这些脚本。因此,如果你想你的脚本具有执行性,请使用chmod +x your-script.py, 那么你就可以使用./your-script.py来执行它了(在本文中你将会看到这种方式)探索platform模块
platform模块在标准库中,它有很多运行我们获得众多系统信息的函数。让我们运行Python解释器来探索它们中的一些函数,那就从platform.uname()函数开始吧:
>>> import platform
>>> platform.uname()
(\'Linux\', \'fedora.echorand\', \'3.7.4-204.fc18.x86_64\', \'#1 SMP Wed Jan 23 16:44:29 UTC 2013\', \'x86_64\')
如果你已知道linux上的uname命令,那么你就会认出来这个函数就是这个命令的一个接口。在Python 2上,它会返回一个包含系统类型(或者内核版本),主机名,版本,发布版本,机器的硬件以及处理器信息元组(tuple)。你可以使用下标访问个别属性,像这样:
>>> platform.uname()[0]
\'Linux\'
在Python 3上,这个函数返回的是一个命名元组:
>>> platform.uname()
uname_result(system=\'Linux\', node=\'fedora.echorand\',
release=\'3.7.4-204.fc18.x86_64\', version=\'#1 SMP Wed Jan 23 16:44:29
UTC 2013\', machine=\'x86_64\', processor=\'x86_64\')
因为返回结果是一个命名元组,这就可以简单地通过名字来指定特定的属性,而不是必须记住下标,像这样:
>>> platform.uname().system
\'Linux\'
platform模块还有一些上面属性的直接接口,像这样:
>>> platform.system()
\'Linux\'
>>> platform.release()
\'3.7.4-204.fc18.x86_64\' 参考技术A 必须说明:不同于Illustrator、InDesign、CorelDRAW、OpenOffice DRAW、Incscape等工具,Word是流动分页的,文件内容本身并不存储分页结果。具体分页时断在哪里、最后分出多少页,都需要现场渲染所有的图文内容之后才能确定。
(简而言之就是:Word文件中仅包含了一行一行的文本,与页面设置中指定的页面尺寸。Word每次打开文件时都会一行一行“摆放”文本数据,发现一页装不下了自动新开一页。当然真正的Word渲染引擎肯定有更复杂的行为。)
从.doc/.docx文件中直接读出页面数量,这本身就是个伪命题。所以千万别在“直接读取页面数量”这个方向上寻求方案——软件开发的技法不好可以改正,但路线错了必死无疑!
你需要调动一套能够真的把Word文件的内容渲染出来的工具(支持二次开发的)。只有把Word文件的所有内容渲染成为可以观看的图形,才能准确得知页面的总数。在Linux上很可能LibreOffice可以吧。而在Windows上就当然是用Word本身了。
注意Word的分页结论是没有保证的。缺少字体、字形不同、软件环境不同等各种原因,都会造成不同电脑上打开同一个Word文件的页数不一致。这一点对服务器也没有例外。得到了页数也只能参考使用,而不要100%信赖。
以上是关于如何在 Linux 上使用 Python 读取 word 文件信息的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 kivy 和 python 在屏幕上显示文件的内容?