600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > python读取加密word_python的特殊文件操作——excel PDF word json csv

python读取加密word_python的特殊文件操作——excel PDF word json csv

时间:2023-03-09 08:01:07

相关推荐

python读取加密word_python的特殊文件操作——excel PDF word json csv

本文所记述的是一些基础知识点中平时用的比较少的方法。对于常见的一些文件格式,python几乎都有相关的库来进行操作。

一、 excel和csv

首先阐述下个人观点,对excel和csv文件的操作首推pandas,不过pandas主要侧重于数据的处理,如果想进行其他操作可以查看以下两个模块:

使用openpyxl模块可以对excel文件进行一些精细化操作,比如格式、样式、公式、图标等都可以使用python来处理。只不过excel本身也可以使用VBA编程,如何取舍还要视情而定。

使用csv模块的reader和writer方法可以像操作普通文本文件一样读写csv文件,其中涉及一些参数,可以对csv文件的数据进行精细化的操作。使用csv.reader()读取的数据为多维的列表。

二、PDF

PDF是二进制文件,处理起来要比普通文本复杂,但是PDF在日常工作中的使用频率越来越高,还是值得关注。python中有一个专门用来操作PDF的库:PyPDF2。

1.基本的PDF读取

下面这段代码展示了基本的PDF读取流程,其输出的结果就是第一页的内容。

>>> import PyPDF2

>>> pdfFileObj = open(file, 'rb')

>>> pdfReader = PyPDF2.PdfFileReader(pdfFileObj)

>>> pdfReader.numPages # 输出文档的页数

>>> pageObj = pdfReader.getPage(0)

>>> pageObj.extractText() # 输出文档的内容

在这个过程中,首先将pdf打开、读入,然后取得指定的page对象,才能通过extractText()方法获取文本内容。

2.加密PDF的读取

有些pdf是经过加密的,可以通过pdfReader.isEncrypted属性判断文档是否通过加密,如果经过加密则输出结果为True。可以使用pdfReader.decrypt('密码')方法进行解密,返回“1”表示解密成功,可以正常获取page对象及其后的操作。

>>> import PyPDF2

>>> pdfReader = PyPDF2.PdfFileReader(open('encrypted.pdf', 'rb'))

>>> pdfReader.isEncrypted

# 输出:True

>>> pdfReader.decrypt('rosebud')

# 输出:1

需要注意的是,这种方式的解密是临时性的,硬盘中的文件仍然是加密后的文件。

3.PDF的写入

在 PyPDF2 中,与 PdfFileReader 对象相对的是 PdfFileWriter 对象,它可以创建一个新的 PDF 文件。但 PyPDF2 不能将任意文本写入 PDF,PyPDF2 写入 PDF 的能力,仅限于从其他 PDF 中拷贝页面、旋转页面、重叠页面和加密文件。其一般流程如下:

1.打开一个或多个已有的 PDF(源 PDF),得到 PdfFileReader 对象。

2.创建一个新的 PdfFileWriter 对象。

3.将页面从 PdfFileReader 对象拷贝到 PdfFileWriter 对象中。

4.最后,利用 PdfFileWriter 对象写入输出的 PDF。

具体方法这里不进行详述,需要时可查阅相关资料。

三、word

创建和修改word文档,可以使用 python-docx 模块。关于word文档的数据特性,在《python编程快速上手》这本书中讲的很好,我这里直接截图:

1553504381716.png

注:关于docx模块是否只能操作.docx文件而不能操作.doc文件这一点还有待核实。

1.docx文件的读取

使用docx模块可以接受一个.docx文件,获取其中的全部文本字符:

import docx

def getText(filename):

doc = docx.Document(filename)

fullText = []

for para in doc.paragraphs:

fullText.append(para.text)

return '\n'.join(fullText)

当然,也可以分段提取paragraphs和runs的数据,例如:

>>> import docx

>>> doc = docx.Document('demo.docx')

>>> len(doc.paragraphs)

7

>>> doc.paragraphs[0].text

'Document Title'

>>> doc.paragraphs[1].text

'A plain paragraph with some bold and some italic'

>>> len(doc.paragraphs[1].runs)

4

>>> doc.paragraphs[1].runs[0].text

'A plain paragraph with some '

>>> doc.paragraphs[1].runs[1].text

'bold'

>>> doc.paragraphs[1].runs[2].text

' and some '

>>> doc.paragraphs[1].runs[3].text

'italic'

2.docx文件的写入

要进行word文档的写入,首先要注意设置paragraphs和runs的样式,然后创建一个新的、空白的 Word

Document 对象,再将新文本写入到Document中。另外,还可以向文档中添加标题、换行符换页符、图片等。(详细内容暂略)

总之,由于word中的内容不是单纯的字符串,而是带有特定的格式和属性,因此操作起来相对复杂一些。

四、json

json是一种非常流行的数据格式,MongoDB的数据就是json格式存储的。python对json文件的操作依赖于json模块。

1.json文件的读取

使用json.loads()方法可以将json格式的文件转换为python能够识别的数据(dict)。例如:

>>> stringOfJsonData = '{"name": "Zophie", "isCat": true, "miceCaught": 0,

"felineIQ": null}'

>>> import json

>>> jsonDataAsPythonValue = json.loads(stringOfJsonData)

>>> jsonDataAsPythonValue

{'isCat': True, 'miceCaught': 0, 'name': 'Zophie', 'felineIQ': None}

2.json文件的写入

与loads()方法相对应,使用json.dumps()可以将python数据转换为json数据。例如:

>>> pythonValue = {'isCat': True, 'miceCaught': 0, 'name': 'Zophie',

'felineIQ': None}

>>> import json

>>> stringOfJsonData = json.dumps(pythonValue)

>>> stringOfJsonData

'{"isCat": true, "felineIQ": null, "miceCaught": 0, "name": "Zophie" }'

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。