当前位置: 首页> 财经> 金融 > Python文件操作(Excel、PDF、XML、Word)

Python文件操作(Excel、PDF、XML、Word)

时间:2025/7/11 14:34:45来源:https://blog.csdn.net/xiangxi1204/article/details/139213357 浏览次数:0次

        大家好,在现代数据驱动的世界中,对于数据的处理和管理是至关重要的。Python作为一种强大而灵活的编程语言,提供了丰富的工具和库来处理各种文件格式。本文将探讨Python中的文件操作,重点介绍如何使用Python处理Excel、PDF、XML和Word等常见文件格式,希望能给大家的工作带来一些帮助。

一、常规文件

        Python提供了丰富的文件操作功能,可以用于创建、读取、写入和管理文件。下面我将详细介绍Python中常见的文件操作:

1、打开文件(Open File):

        要操作文件,首先需要使用内置的open()函数打开文件。open()函数接受文件路径和打开模式作为参数,并返回一个文件对象,用于后续的读取或写入操作。

# 打开文件
file = open('example.txt', 'r')  # 以只读模式打开文件

2、读取文件内容(Read File):

        可以使用文件对象的read()方法来读取文件内容。您可以一次读取整个文件,也可以按行读取文件内容。

# 读取整个文件内容
content = file.read()# 按行读取文件内容
for line in file:print(line)

3、写入文件内容(Write File):

        使用文件对象的write()方法将数据写入文件。在打开文件时,要确保使用写入模式('w'或'a')。

# 写入数据到文件
file = open('example.txt', 'w')  # 以写入模式打开文件
file.write('Hello, world!')

4、关闭文件(Close File):

        在完成对文件的操作后,需要使用文件对象的close()方法关闭文件。关闭文件可以释放资源并确保数据被正确写入磁盘。

# 关闭文件
file.close()

5、自动关闭文件(With Statement):

使用with语句可以在文件操作结束后自动关闭文件,不需要手动调用close()方法。

with open('example.txt', 'r') as file:content = file.read()print(content)

6、文件操作模式(File Modes):

open()函数支持多种文件操作模式,包括:

  • 'r':只读模式(默认),文件必须存在。
  • 'w':写入模式,如果文件存在则清空文件,如果文件不存在则创建新文件。
  • 'a':追加模式,如果文件存在则在文件末尾追加数据,如果文件不存在则创建新文件。

7、其他操作:

        除了上述基本操作外,Python还提供了其他文件操作功能,如文件重命名、删除文件等。您可以使用os模块和shutil模块来执行这些操作。

import os# 文件重命名
os.rename('old.txt', 'new.txt')# 删除文件
os.remove('example.txt')

        通过上述方法,您可以在Python中进行各种文件操作,包括读取、写入、关闭文件以及其他文件管理操作。记住在文件操作完成后关闭文件是一个良好的习惯,以避免资源泄露和数据丢失。

二、使用openpyxl操作Excel文件

openpyxl 是一个用于操作 Excel 文件的Python库,它可以读取、写入和修改 Excel 文件。

1、安装 openpyxl:

pip install openpyxl

2、打开 Excel 文件:

要操作 Excel 文件,首先需要打开它。使用 load_workbook() 函数打开一个现有的 Excel 文件:

from openpyxl import load_workbookworkbook = load_workbook('example.xlsx')

3、获取工作表:

打开 Excel 文件后,可以使用 active 属性获取默认的工作表,或者使用 get_sheet_by_name() 方法获取指定名称的工作表:

# 获取默认的工作表
sheet = workbook.active# 获取指定名称的工作表
sheet = workbook.get_sheet_by_name('Sheet1')

4、读取单元格数据:

可以使用工作表对象的 cell() 方法或直接通过索引来访问单元格,并使用 value 属性获取单元格中的数据:

# 通过索引读取单元格数据
data = sheet['A1'].value# 使用 cell() 方法读取单元格数据
data = sheet.cell(row=1, column=1).value

5、写入单元格数据:

可以使用 cell() 方法或直接通过索引来写入数据到单元格:

# 通过索引写入数据到单元格
sheet['A1'] = 'Hello, world!'# 使用 cell() 方法写入数据到单元格
sheet.cell(row=1, column=1).value = 'Hello, world!'

6、合并单元格:

可以使用 merge_cells 方法将多个单元格合并成一个单元格。

from openpyxl import Workbook# 创建一个新的工作簿和工作表
workbook = Workbook()
sheet = workbook.active# 合并单元格
sheet.merge_cells('A1:B2')

7、设置单元格样式:

可以使用 FontPatternFill 等对象来设置单元格的字体、颜色、填充等样式。

from openpyxl.styles import Font, PatternFill# 设置字体样式
font = Font(name='Arial', size=12, bold=True)# 设置填充样式
fill = PatternFill(fill_type='solid', start_color='FF0000')# 将样式应用到单元格
sheet['A1'].font = font
sheet['A1'].fill = fill

8、创建图表:

可以使用 openpyxl.chart 模块来创建各种类型的图表,并将其添加到工作表中。

from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference# 创建一个新的工作簿和工作表
workbook = Workbook()
sheet = workbook.active# 创建数据
data = [['Category', 'Value'],['A', 10],['B', 20],['C', 30]
]# 将数据写入工作表
for row in data:sheet.append(row)# 创建柱状图
chart = BarChart()
chart.title = 'Sample Chart'
chart.x_axis.title = 'Category'
chart.y_axis.title = 'Value'# 设置图表数据范围
data = Reference(sheet, min_col=2, min_row=1, max_col=2, max_row=4)
categories = Reference(sheet, min_col=1, min_row=2, max_row=4)# 添加数据和分类到图表
chart.add_data(data, titles_from_data=True)
chart.set_categories(categories)# 将图表添加到工作表
sheet.add_chart(chart, 'E1')

9、拆分单元格:

openpyxl 中,拆分单元格的功能并不直接提供,但可以通过合并单元格的相反操作来实现拆分单元格的效果。

(1)先判断单元格是否是合并单元格:

可以通过检查单元格的 merged_cells 属性来确定一个单元格是否是合并单元格。

from openpyxl import load_workbook# 打开 Excel 文件
workbook = load_workbook('example.xlsx')
sheet = workbook.active# 检查单元格是否是合并单元格
is_merged = sheet.merged_cells.issuperset(sheet['A1':'B2'])

(2)如果是合并单元格,进行拆分:

如果确定某个单元格是合并单元格,可以使用 unmerge_cells() 方法来拆分单元格。

from openpyxl import load_workbook# 打开 Excel 文件
workbook = load_workbook('example.xlsx')
sheet = workbook.active# 拆分单元格
sheet.unmerge_cells('A1:B2')

10、保存 Excel 文件:

在完成对 Excel 文件的操作后,要记得保存文件,以确保修改生效:

workbook.save('example.xlsx')

11、示例:

下面是一个完整的示例

from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
from openpyxl.styles import Font, PatternFill# 创建一个新的工作簿
workbook = Workbook()# 获取默认的工作表
sheet = workbook.active# 写入数据到工作表
data = [['Category', 'Value'],['A', 10],['B', 20],['C', 30]
]for row in data:sheet.append(row)# 设置标题行字体样式
font = Font(bold=True)
for cell in sheet['1:1']:cell.font = font# 设置填充样式
fill = PatternFill(fill_type='solid', start_color='FF0000')
for row in sheet.iter_rows(min_row=2, max_row=4, min_col=2, max_col=2):for cell in row:cell.fill = fill# 创建柱状图
chart = BarChart()
chart.title = 'Sample Chart'
chart.x_axis.title = 'Category'
chart.y_axis.title = 'Value'# 设置图表数据范围
data = Reference(sheet, min_col=2, min_row=1, max_col=2, max_row=4)
categories = Reference(sheet, min_col=1, min_row=2, max_row=4)# 添加数据和分类到图表
chart.add_data(data, titles_from_data=True)
chart.set_categories(categories)# 将图表添加到工作表
sheet.add_chart(chart, 'E1')# 保存工作簿到文件
workbook.save('example.xlsx')

        首先,创建一个新的工作簿,并获取默认的工作表。然后,写入数据到工作表,并设置标题行的字体样式和数据单元格的填充样式。接下来,创建一个柱状图,并设置图表的标题和坐标轴标题。最后,将图表添加到工作表中,并保存工作簿到文件。

三、使用PyPDF2操作PDF文件

PyPDF2 是一个用于处理PDF文件的Python库,它可以实现对PDF文件的读取、写入和修改。

1、安装 PyPDF2:

pip install PyPDF2

2、读取 PDF 文件:

使用 PdfFileReader 类可以打开并读取一个 PDF 文件。

import PyPDF2# 打开 PDF 文件
with open('example.pdf', 'rb') as file:reader = PyPDF2.PdfFileReader(file)# 获取 PDF 文档的总页数num_pages = reader.numPages# 读取每一页的内容for page_number in range(num_pages):page = reader.getPage(page_number)text = page.extractText()print(text)

3、写入 PDF 文件:

使用 PdfFileWriter 类可以创建一个新的 PDF 文件,并写入内容。

import PyPDF2# 创建一个 PDF 写入对象
writer = PyPDF2.PdfFileWriter()# 创建一个页面并添加内容
page = PyPDF2.PageObject()
page.mergePage(reader.getPage(0))  # 从现有 PDF 中获取页面内容
writer.addPage(page)# 将写入的内容保存到新的 PDF 文件中
with open('new_pdf.pdf', 'wb') as file:writer.write(file)

4、注意事项:

  • PyPDF2 对于某些特殊格式的 PDF 文件可能无法正确解析或处理。如果遇到解析错误,可以尝试其他库,如 pdfplumber
  • 在写入 PDF 文件时,建议先确保所写入的内容格式正确,以免造成文件损坏。

5、示例:

import PyPDF2# 打开 PDF 文件
with open('example.pdf', 'rb') as file:# 创建 PdfFileReader 对象reader = PyPDF2.PdfFileReader(file)# 获取 PDF 文档的总页数num_pages = reader.numPages# 读取每一页的内容for page_number in range(num_pages):# 获取页面对象page = reader.getPage(page_number)# 提取文本内容text = page.extractText()# 打印文本内容print(f'Page {page_number + 1}:')print(text)print()

        上述示例中,打开了一个名为 example.pdf 的PDF文件,并逐页读取其内容。对于每一页,它使用 getPage() 方法获取页面对象,然后使用 extractText() 方法提取页面的文本内容。最后,它打印出每一页的文本内容。

四、操作XML文件

        可以使用内置的xml模块来操作XML文件。这个模块提供了一种简单而有效的方式来解析和生成XML文档。

1、解析XML文件:

可以使用xml.etree.ElementTree模块的ElementTree类来解析XML文件。

import xml.etree.ElementTree as ET# 解析XML文件
tree = ET.parse('example.xml')
root = tree.getroot()# 遍历XML文档
for child in root:print(child.tag, child.attrib)for subchild in child:print(subchild.tag, subchild.text)

2、创建XML文件:

使用ElementTree类来创建XML文档。

import xml.etree.ElementTree as ET# 创建根元素
root = ET.Element('root')# 创建子元素
child1 = ET.SubElement(root, 'child1')
child2 = ET.SubElement(root, 'child2')# 设置子元素的文本内容
child1.text = 'This is child 1'
child2.text = 'This is child 2'# 创建XML文档
tree = ET.ElementTree(root)# 将XML文档保存到文件
tree.write('output.xml')

3、修改XML文件:

通过修改Element对象的属性和文本来修改XML文档。

import xml.etree.ElementTree as ET# 解析XML文件
tree = ET.parse('example.xml')
root = tree.getroot()# 修改XML文档
for child in root:if child.tag == 'child1':child.text = 'Modified child 1'# 将修改后的XML文档保存到文件
tree.write('modified.xml')

4、查找元素:

可以使用 find() 方法和 findall() 方法来查找XML文档中的元素。

import xml.etree.ElementTree as ET# 解析XML文件
tree = ET.parse('example.xml')
root = tree.getroot()# 查找元素
element = root.find('child1')
elements = root.findall('child2')

5、添加属性:

使用 set() 方法来为元素添加属性。

import xml.etree.ElementTree as ET# 解析XML文件
tree = ET.parse('example.xml')
root = tree.getroot()# 添加属性
element = root.find('child1')
element.set('attr', 'value')

6、删除元素:

使用 remove() 方法来删除元素。

import xml.etree.ElementTree as ET# 解析XML文件
tree = ET.parse('example.xml')
root = tree.getroot()# 删除元素
element = root.find('child1')
root.remove(element)

7、迭代器:

使用 iter() 方法和 next() 函数来创建一个迭代器,用于按顺序访问XML文档中的所有元素。

import xml.etree.ElementTree as ET# 解析XML文件
tree = ET.parse('example.xml')
root = tree.getroot()# 创建迭代器
iter = root.iter()
element = next(iter)

8、遍历父元素和子元素:

使用 iter() 方法和 iterfind() 方法来遍历父元素和子元素。

import xml.etree.ElementTree as ET# 解析XML文件
tree = ET.parse('example.xml')
root = tree.getroot()# 遍历父元素
for parent in root.iter():for child in parent.iterfind('child'):print(child.tag)

9、示例:

import xml.etree.ElementTree as ET# 解析XML文件
tree = ET.parse('books.xml')
root = tree.getroot()# 遍历XML文档并打印书籍信息
for book in root.findall('book'):# 获取书籍的属性值book_id = book.attrib['id']# 获取书籍的子元素值title = book.find('title').textauthor = book.find('author').textprice = book.find('price').text# 打印书籍信息print(f"Book ID: {book_id}")print(f"Title: {title}")print(f"Author: {author}")print(f"Price: {price}")print()# 添加新书籍
new_book = ET.SubElement(root, 'book')
new_book.set('id', '4')title = ET.SubElement(new_book, 'title')
title.text = 'Machine Learning Basics'author = ET.SubElement(new_book, 'author')
author.text = 'Emily Brown'price = ET.SubElement(new_book, 'price')
price.text = '59.99'# 将修改后的XML文档保存到文件
tree.write('modified_books.xml')

        上面示例首先使用 ET.parse() 方法解析名为 books.xml 的 XML 文件,并获取根元素。然后,遍历根元素下的所有书籍元素,提取每本书籍的信息并打印出来。接着,添加了一本新书籍,并将修改后的 XML 文档保存到名为 modified_books.xml 的文件中。

五、使用python-docx操作Word文件

        可以使用第三方库python-docx来操作Word文档。这个库提供了一种简单而有效的方式来创建、读取和修改Word文档。

1、安装 python-docx:

pip install python-docx

2、创建新的Word文档:

可以使用 Document 类创建一个新的Word文档,并向其中添加内容。

from docx import Document# 创建一个新的Word文档
doc = Document()# 添加标题和段落到文档中
doc.add_heading('Document Title', level=1)
doc.add_paragraph('This is a paragraph.')# 保存文档到文件
doc.save('example.docx')

3、打开并读取现有的Word文档:

使用 Document 类的 open() 方法打开现有的Word文档,并读取其中的内容。

from docx import Document# 打开现有的Word文档
doc = Document('example.docx')# 遍历文档中的段落并打印内容
for paragraph in doc.paragraphs:print(paragraph.text)

4、修改现有的Word文档:

读取现有的Word文档,修改其中的内容,并保存修改后的文档。

from docx import Document# 打开现有的Word文档
doc = Document('example.docx')# 修改文档中的内容
for paragraph in doc.paragraphs:paragraph.text = 'Modified paragraph.'# 保存修改后的文档
doc.save('modified_example.docx')

5、添加表格:

可以使用 add_table() 方法来添加一个简单的表格到文档中,然后使用嵌套的循环为每个单元格设置内容。

from docx import Document# 创建一个新的Word文档
doc = Document()# 添加一个简单的表格到文档中
table = doc.add_table(rows=3, cols=3)# 填充表格单元格的内容
for i in range(3):for j in range(3):table.cell(i, j).text = f'Cell {i+1}-{j+1}'# 保存文档到文件
doc.save('table_example.docx')

6、设置表格样式:

使用表格对象的属性来设置表格的样式,例如边框、对齐方式、宽度等。

from docx import Document
from docx.shared import Pt
from docx.enum.table import WD_ALIGN_VERTICAL# 创建一个新的Word文档
doc = Document()# 添加一个简单的表格到文档中
table = doc.add_table(rows=3, cols=3)# 设置表格样式
table.style = 'Table Grid'# 设置表格列宽
for cell in table.columns[0].cells:cell.width = Pt(100)# 设置表格的对齐方式
table.alignment = WD_ALIGN_VERTICAL.CENTER# 填充表格单元格的内容
for i in range(3):for j in range(3):table.cell(i, j).text = f'Cell {i+1}-{j+1}'# 保存文档到文件
doc.save('styled_table_example.docx')

7、示例:

from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT# 创建一个新的Word文档
doc = Document()# 添加标题和段落到文档中
doc.add_heading('Document Title', level=1)
doc.add_paragraph('This is a paragraph.')# 添加一个简单的表格到文档中
table = doc.add_table(rows=3, cols=3)# 设置表格样式
table.style = 'Table Grid'# 设置表格列宽
for cell in table.columns[0].cells:cell.width = Pt(100)# 设置表格的对齐方式
table.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER# 填充表格单元格的内容
for i in range(3):for j in range(3):table.cell(i, j).text = f'Cell {i+1}-{j+1}'# 保存文档到文件
doc.save('example.docx')# 打开现有的Word文档并读取内容
doc = Document('example.docx')# 遍历文档中的段落并打印内容
print("Contents of the document:")
for paragraph in doc.paragraphs:print(paragraph.text)
print()# 修改文档中的内容
for paragraph in doc.paragraphs:if 'paragraph' in paragraph.text:paragraph.text = 'Modified paragraph.'# 保存修改后的文档
doc.save('modified_example.docx')# 打开现有的Word文档并读取修改后的内容
doc = Document('modified_example.docx')# 遍历文档中的段落并打印修改后的内容
print("Modified contents of the document:")
for paragraph in doc.paragraphs:print(paragraph.text)

        这个示例首先创建了一个新的Word文档,添加了标题、段落和表格到文档中,并设置了表格的样式。然后,保存了创建好的文档到文件example.docx中。接着,打开了这个新创建的文档,读取了其中的内容,并将读取的内容打印出来。接着,修改了文档中包含'paragraph'的段落,并将修改后的文档保存到文件modified_example.docx中。最后,打开了修改后的文档,并打印出其中修改后的内容。

关键字:Python文件操作(Excel、PDF、XML、Word)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: