Contents
18.9. 处理不同类型的文件¶
学习大纲
处理PDF文件。
处理Excel文件。
处理CSV文件。
处理文本文件。
18.9.1. 1.处理PDF文件¶
pip3 install PyPDF2
1.1 读取PDF文件并获取页数¶
PdfFileReader() 函数可以用于读取PDF文件
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import PyPDF2
with open('test.pdf', 'rb') as pdf:
read_pdf = PyPDF2.PdfFileReader(pdf)
print("Number of pages in pdf : ", read_pdf.numPages)
1.2 提取文本¶
使用PyPDF2 模块的extractText()
方法可以提取PDF文件的内容。我们创建一个脚本,命名为extract_text.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import PyPDF2
with open('test.pdf', 'rb') as pdf:
read_pdf = PyPDF2.PdfFileReader(pdf)
pdf_page = read_pdf.getPage(1)
pdf_content = pdf_page.extractText()
print(pdf_content)
1.3 旋转PDF页面¶
如何旋转PDF页面,这将使用PDF 对象的rotate.Clockwise()
方法。创建一个脚本,命名为rotate_pdf.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import PyPDF2
with open('test.pdf', 'rb') as pdf:
rd_pdf = PyPDF2.PdfFileReader(pdf)
wr_pdf = PyPDF2.PdfFileWriter()
for pg_num in range(rd_pdf.numPages):
pdf_page = rd_pdf.getPage(pg_num)
pdf_page.rotateClockwise(90)
wr_pdf.addPage(pdf_page)
with open('rotated.pdf', 'wb') as pdf_out:
wr_pdf.write(pdf_out)
print("pdf successfully rotated")
上面的示例程序为旋转PDF页面,首先创建了PDF文件的PdfFileReader
对象。因为旋转的页面将被写入新的PDF文件,所以在程序中使用了PyPDF2
模块的PdfFileWriter() 函数写入 PDF文件,新的 PDF文件被命名为
rotate.pdf 。脚本程序使用 rotate. Clockwise()
方法旋转PDF文件中的页面,然后使用addPage()
函数,将页面添加到写入的对象。为了将这些PDF页面写入新的PDF文件,首先打开一个新文件对象(pdf_out
),然后使用PdfFileWriter对象的write()
方法,将PDF页面写入其中。最后关闭原始文件对象(test.pdf
)和新文件对象(pdf_out )。
18.9.2. 2.处理Excel文件¶
2.1 使用xlrd模块¶
pip3 install xlrd
使用方式这里省略,之前一直有使用这个模块,参考自动化运维章节文档。
2.2 使用openpyxl模块¶
openpyxl 用于读写xlsx 、xlsm 、xltx 和xltm 文件。运行以下命令即可安装openpyxl 模块。
pip3 install openpyxl
2.3 使用Pandas模块¶
在使用Pandas 模块读取Excel文件之前,需要先安装Pandas 模块
pip3 install pandas
18.9.3. 3.处理CSV文件¶
CSV格式代表逗号分隔值(Comma Separated Value),逗号用于分隔数据记录中的字段,此格式通常用于电子表格和数据库导入和导出。
CSV 文件是纯文本文件,它使用特定结构来排列表格数据。Python 有内置的CSV模块,可以解析此类文件。CSV 模块主要用于处理从电子表格和数据库导出的文本数据。
CSV模块的内置函数包含所有可能用到的功能,如下所示。
csv.reader():此函数返回reader对象,该对象迭代访问CSV文件的每行内容。csv.writer():此函数返回writer对象,该对象将数据写入CSV文件。csv.register_dialect():此函数用于注册CSV自定义格式(dialect)。csv.unregister_dialect():此函数用于取消注册CSV自定义格式。csv.get_dialect():此函数返回给定名称的自定义格式。csv.list_dialects():此函数返回所有已注册的自定义格式。csv.field_size_limit():此函数返回解析器允许的当前最大字段大小。
在本节中仅使用csv.reader() 和csv.writer() 。
3.1 读取CSV文件¶
这里使用Python内置的CSV
模块处理CSV文件,主要是使用csv.reader()
函数读取CSV文件。首先我们创建一个脚本,命名为csv_read.py ,
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import csv
csv_file = open('test.csv', 'r')
with csv_file:
read_csv = csv.reader(csv_file)
for row in read_csv:
print(row)
3.2 写入CSV文件¶
使用csv.writer()
函数向CSV文件写入数据。这里将数据存储到Python列表中,然后写入CSV文件。首先我们创建一个脚本,命名为csv_write.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import csv
write_csv = [['Name', 'Sport'], ['Andres Iniesta', 'Football'], ['AB de Villiers', 'Cricket'],
['Virat Kohli', 'Cricket'], ['Lionel Messi', 'Football']]
with open('csv_write.csv', 'w') as csvFile:
writer = csv.writer(csvFile)
writer.writerows(write_csv)
print(write_csv)
18.9.4. 4.处理文本文件¶
Python中的文件访问模式如下所示。
只读模式(
"r"):此模式用于打开一个文本文件进行读取。如果该文件不存在,则抛出I/O错误。此模式也是打开文件的默认模式。读写模式(
"r+"):此模式用于打开一个文本文件进行读取和写入。如果文件不存在,则抛出I/O错误。只写模式(
"w"):此模式用于打开一个文本文件进行写入。如果文件不存在,则创建文件;如果已有文件,则覆盖其中的数据。写入和读取模式(
"w+"):此模式用于打开一个文本文件进行读取和写入。如果文件不存在,则创建文件;如果已有文件,则覆盖其中的数据。追加模式(
"a"):此模式用于打开一个文本文件进行写入。如果文件不存在,则创建文件;如果已有文件,则将数据插入现有数据的末尾。追加和读取模式(
"a+"):此模式用于打开一个文本文件进行读取和写入。如果文件不存在,则创建文件;如果已有文件,则写入的数据将插入现有数据的末尾。
4.1 open()函数¶
语法如下所示。
Name_of_file_object = open("Name of file","Access_Mode")
# 不在同一路径下的文件,打开需要写路径
Name_of_file_object = open("/home/.../Name of file","Access_Mode")
4.2 写入文本文件¶
text_file = open("test.txt", "w")
text_file.write("Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\n")
text_file.close()
4.3 读取文本文件¶
text_file = open("test.txt", "r")
data = text_file.read()
print(data)
text_file.close()
18.9.5. 总结¶
学习了如何处理不同类型的文件,包括处理PDF、Excel、CSV和文本文件,我们还使用Python模块对不同类型的文件执行了特定操作。