问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在 Linux 上使用 Python 读取 word 文件信息

发布网友 发布时间:2022-04-20 19:07

我来回答

3个回答

懂视网 时间:2022-04-08 22:56

有关前两篇的链接:

运用Python语言编写获取Linux基本系统信息(一):获得Linux版本、内核、当前时间

运用Python语言编写获取Linux基本系统信息(二):文件系统使用情况获取

一、实验环境:

Python2.7.10、pycharm、VM虚拟机、CentOS6.3、mysql

二、MySQLdb模块:

MySQLdb模式是Python中专门连接MySQL数据库的模块,另外Python开发环境的搭建真心感觉比其他的麻烦好多。。。这次光安装这个MySQLdb这个模块就花了好长时间,遇到好多问题,不过幸好还是成功使用上了,稍后我会加上一篇我是怎么安装的教程,会列出我遇到的问题供大家参考。

三、实现:

这里先介绍一下数据库,我们使用的是安装在CentOS上的MySQL数据库。数据库的安装这里不做介绍。

在MySQL中我们把所有表放在名为linux的数据库中,数据库包含两张表:存放linux信息数据的linux表中,存放硬盘数据的fdisk表中

技术分享

 

这两个表的SQL:

 1 CREATE TABLE linux //linux表
 2 (
 3 os_version VARCHAR(1000) NOT NULL,
 4 os_kernal VARCHAR(1000) not NULL,
 5 os_data VARCHAR(1000) PRIMARY KEY,
 6 )
 7 
 8 CREATE TABLE fdisk //fdisk表
 9 (
10 f_date TIMESTAMP(14) NOT NULL,
11 filesystem VARCHAR(1000) NOT NULL,
12 rom VARCHAR(1000) not NULL,
13 used VARCHAR(1000) not NULL,
14 not_used VARCHAR(1000) not NULL,
15 used_per VARCHAR(1000) NOT NULL,
16 mount VARCHAR(1000) not NULL
17 )

所有对于表的操作都在一个py文件中,包括插入和查询操作

mysql_db.py

 1 #coding=UTF-8
 2 import MySQLdb
 3 import _mysql_exceptions
 4 createlinuxsql = """
 5 CREATE TABLE linux
 6 (
 7 os_version VARCHAR(1000) NOT NULL,
 8 os_kernal VARCHAR(1000) not NULL,
 9 os_data VARCHAR(1000) PRIMARY KEY,
10 
11 )
12 """
13 createfdisksql = """
14 CREATE TABLE fdisk
15 (
16 f_date TIMESTAMP(14) NOT NULL,
17 filesystem VARCHAR(1000) NOT NULL,
18 rom VARCHAR(1000) not NULL,
19 used VARCHAR(1000) not NULL,
20 not_used VARCHAR(1000) not NULL,
21 used_per VARCHAR(1000) NOT NULL,
22 mount VARCHAR(1000) not NULL
23 )
24 """
25 class mysql:
26 def __init__(self):
27  try:
28  self.conn = MySQLdb.connect(host=‘192.168.179.129‘,user=‘root‘,passwd=‘ro‘,db=‘linux‘)
29  self.cur = self.conn.cursor()
30  except _mysql_exceptions.OperationalError,e:
31  print ‘数据库无法连接‘
32 def __del__(self):
33  self.cur.close()
34  self.conn.commit()
35  self.conn.close()
36 def select(self):
37  try:
38  self.cur.execute("select * from linux")
39  for each in self.cur.fetchall():
40   print each
41  except _mysql_exceptions.ProgrammingError,e:
42   self.cur.execute(createlinuxsql)
43 def os_insert(self,version,kernal,data):
44  try:
45  self.cur.execute("insert into linux VALUES (‘%s‘,‘%s‘,‘%s‘)"% (version,kernal,data))
46  except _mysql_exceptions.ProgrammingError,e:
47   self.cur.execute(createlinuxsql)
48  self.cur.execute("insert into linux VALUES (‘%s‘,‘%s‘,‘%s‘)"% (version,kernal,data))
49 def fdisk_select(self):
50  try:
51  self.cur.execute("select * from fdisk")
52  print self.cur.fetchall()
53  except _mysql_exceptions.ProgrammingError,e:
54   self.cur.execute(createfdisksql)
55 def fdisk_insert(self,filesystemz,romz,usedz,nousedz,usedperz,mountz):
56  try:
57  self.cur.execute("insert into fdisk(filesystem,rom,used,not_used,used_per,mount) 58     VALUES (‘%s‘,‘%s‘,‘%s‘,‘%s‘,‘%s‘,‘%s‘)"% (filesystemz,59     romz,usedz,nousedz,usedperz,mountz))
60  except _mysql_exceptions.ProgrammingError,e:
61   self.cur.execute(createfdisksql)
62  self.cur.execute("insert into fdisk(filesystem,rom,used,not_used,used_per,mount) 63     VALUES (‘%s‘,‘%s‘,‘%s‘,‘%s‘,‘%s‘,‘%s‘)"% (filesystemz,64     romz,usedz,nousedz,usedperz,mountz))

不用去手动建立表,只要数据库存在会自动建立表的

同时对以前的一些代码进行了更新,更新只填写变动

os_info.py:

 1 # coding=UTF-8
 2 import linux_status
 3 import os_info_in
 4 from mysql_db import mysql
 5 class os_info:
 6 def __init__(self):
 7  # self.linux_stat=linux_status.linux_status()
 8  self.os_infos_in= os_info_in.os_info_in()
 9 def os_info(self):
10  self.linux_stat=linux_status.linux_status()
11  self.linux_stat.os_version = self.os_infos_in.os_version()
12  self.linux_stat.os_kernal = self.os_infos_in.os_kernel()
13  self.linux_stat.os_date = self.os_infos_in.os_date()
14  return self.linux_stat
15 def os_in_mysql(self):
16  os_db=mysql()
17  os_db.os_insert(self.os_infos_in.os_version(),self.os_infos_in.os_kernel(),self.os_infos_in.os_date())

linux_fdisk.py:

def fdisk_mysql(self):
 self.fdisk_mysql=mysql()
 i=0
 j=1
 while j==1:
  try:
  self.fdisk_mysql.fdisk_insert(self.disk_info[i],self.disk_info[i+1],self.disk_info[i+2],     self.disk_info[i+3],self.disk_info[i+4],self.disk_info[i+5])
  i=i+6
  except Exception,e:
  j=0

四、结果展示:

技术分享

技术分享

技术分享

mysql不支持显示中文,把linux改为英文就可以了(export LANG=en_US)

技术分享

技术分享

 

最后~

这个系列就先写到这吧~~等以后有啥新的想法会继续写的~~

 

欢迎大神加我QQ:707475486~备注:博客园就行~这样我有什么问题就可以很轻松的问了!大家一起进步~~~~~最近工作比较忙所以这一篇更得比较慢~

 

运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程,把获取的信息存入数据库

标签:

热心网友 时间:2022-04-08 20:04

请注意,所有的程序在它们第一行都是#!/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'

热心网友 时间:2022-04-08 21:22

必须说明:不同于Illustrator、InDesign、CorelDRAW、OpenOffice DRAW、Incscape等工具,Word是流动分页的,文件内容本身并不存储分页结果。具体分页时断在哪里、最后分出多少页,都需要现场渲染所有的图文内容之后才能确定。
(简而言之就是:Word文件中仅包含了一行一行的文本,与页面设置中指定的页面尺寸。Word每次打开文件时都会一行一行“摆放”文本数据,发现一页装不下了自动新开一页。当然真正的Word渲染引擎肯定有更复杂的行为。)
从.doc/.docx文件中直接读出页面数量,这本身就是个伪命题。所以千万别在“直接读取页面数量”这个方向上寻求方案——软件开发的技法不好可以改正,但路线错了必死无疑!
你需要调动一套能够真的把Word文件的内容渲染出来的工具(支持二次开发的)。只有把Word文件的所有内容渲染成为可以观看的图形,才能准确得知页面的总数。在Linux上很可能LibreOffice可以吧。而在Windows上就当然是用Word本身了。
注意Word的分页结论是没有保证的。缺少字体、字形不同、软件环境不同等各种原因,都会造成不同电脑上打开同一个Word文件的页数不一致。这一点对服务器也没有例外。得到了页数也只能参考使用,而不要100%信赖。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
小鹏交付怎么评分 2024年5月趋乾黄道吉日 2024年5月哪天适合趋乾 2024年6月词讼黄道吉日 2024年6月哪天适合词讼 2024年8月成服黄道吉日 2024年8月哪天适合成服 2024年8月26日黄道吉日 百度识图在线识别这个人是 百度怎样识别明星是谁? 海绵城市都建什么 包钢股票前景如何 600010包钢股份这支股票我现在被套百分之六了,后市该怎么操作,适合做长 ... linux怎么执行Python文件 怎样在Linux环境下改变python的模块路径 python可以编译成Linux下的二进制文件么 Python Linux环境下,需要登录到另一个用户,执行... linux下使用python访问服务器中文件 Python怎么读取其他linux上的文件 linux如何编写python脚本 如何用Python写Linux命令 怎样在linux系统下修改python path Python raw_input在linux下如何可以用方向键左右移... Linux环境下python替换文件夹内所有文件名中特定字符 Linux修改文件中的内容 想用python语言修改Linux下/etc/sysconfig/network... 白衣服上沾了黄泥,怎么洗掉啊? 白裤子上弄上泥点了 洗不掉怎么办 衣服上泥渍怎么也洗不掉怎么办 白裤子上溅了泥点,洗不掉,该怎么办呢? 如何能去掉衣服上的泥渍 不小心摔倒了。衣服上全是泥渍,该怎么清洗呢 衣服上的泥渍怎么去除 UG 保存时提示建模器错误,该怎么解决啊?如图 UG文件保存时出现错误,建模器错误:Frustrum中出现... UG打开文件提示建模器错误,无效的文件名怎么办 我的UG图不能保存 说是建模器发生错误 怎么办呢 ug建模器错误,几何体未能通过检查 ug计算刀路时建模器错误 ug文件无法加载建模器错误怎么办 UG建模器错误:建模器错误:请报告错误 怎么回事 我在用ug画图时想保存时保存不了,出现建模器错误... UG经常出现建模器错误! 我得UG图保存不了 说是建模器错误 怎么把他导出来 ug钣金展开的过程中出现 建模器错误 为能找到最近... NX-UG工程图出现“更新隐藏线显示时发生建模器错误”... UG6.0制图时提示建模器错误,是什么原因? UG4.0打开parasolid文件出现建模器错误,schema UG8.5显示:建模器错误,无效的文件内容。文件打不... 关于运动会的作文怎么写三年级 三年级作文运动会怎么写 如何写开运动会的作文三年级 运动会(作文)300字