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

        大家好,在现代数据驱动的世界中,对于数据的处理和管理是至关重要的。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中。最后,打开了修改后的文档,并打印出其中修改后的内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/16018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ最全使用教程-小白也能看懂

1、队列: 点对点的通信(point - to - point): 消息发送者发送消息,消息代理将其放入到一个队列中,消息接收者从队列中获取消息内容,消息读取后被移除出队列。 2、主题: 发布publish/订阅subscribe 消息通信: 发布者发送消息到主题,多个接收者(订阅者)订阅…

装备制造项目管理软件:奥博思PowerProject项目管理系统

数字化正逐步改变着制造方式和企业组织模式。某制造企业领导层透露,在采用数字化项目管理模式后,企业的发展韧性更加强劲,构筑起了竞争新优势,企业产品研制周期缩短25%,生产效率提升18%。 随着全球经济的发展&#xf…

简单好用的文本识别方法--付费的好用,免费的更有性价比

文章目录 先说付费的进入真题,免费的来喏!PixPin微信 先说付费的 直达网址!!! 进入真题,免费的来喏! PixPin 商店里就有 使用示例: 可以看到:贴在桌面上的图片可以复制图片中的文字,真的很…

AI语音及其应用

文章目录 一、基本认识二、AI语音应用场景三、真人录音与AI配音的区别四、AI语音创作基本步骤 本文将简单了解下AI语音、应用场景及其优势和创作核心步骤。 一、基本认识 AI语音是指基于人工智能技术开发的语音识别和语音合成系统。语音识别是指计算机识别和理解人类语音的能力…

【机器智能】:AI机器学习在医疗服务的广泛应用与实践案例

目录 引言一,什么是机器学习二,AI在医学影像诊断中的应用三,AI在个性化治疗方案设计中的应用四,医疗图像识别技术五,医疗语言识别技术六,结语 引言 随着人工智能(AI)和机器学习技术…

SQL注入:原理及示例讲解,配置mysql环境变量,pikachu靶场搭建

SQL注入原理 SQL注入(SQL Injection)是一种代码注入技术,攻击者通过将恶意的SQL代码插入到应用程序的输入字段中,诱使后台数据库执行这些恶意代码,从而对数据库进行未授权的操作。常见的操作包括获取敏感数据、篡改数…

知能行——考研数学利器

知能行使用体验全记录 首先,我先介绍一下自己,我是2018级的,2022年6月毕业,本科沈阳工业大学(双非),今年二战,专业课自动控制原理,数二英二,目标是江南大学控…

[书生·浦语大模型实战营]——第三节:茴香豆:搭建你的 RAG 智能助理

0.RAG 概述 定义:RAG(Retrieval Augmented Generation)技术,通过检索与用户输入相关的信息片段,并结合外部知识库来生成更准确、更丰富的回答。解决 LLMs 在处理知识密集型任务时可能遇到的挑战, 如幻觉、知识过时和缺…

社交媒体数据恢复:聊天宝

请注意,本教程仅针对聊天宝应用程序,而非其他聊天软件。以下是详细的步骤: 首先,请确保您已经登录了聊天宝应用程序。如果您尚未登录,请使用您的账号登录。 在聊天宝主界面,找到您希望恢复聊天记录的对话框…

小明同学的考试分数统计:总分、平均分与方差计算进阶

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、原始方法介绍与问题发现 原始方法存在的问题 二、优化方案:使用列表简化代…

串口中断原理及实现

一、串口的原理 SM0、SM1——串行口工作模式 SM0SM1模式特点00模式0移位寄存器方式,用于I/O口扩展01模式18位UART,波特率可变10模式29位UART,波特率为时钟频率/32或/6411模式39位UART,波特率可变 TI、RI——发送、接收中断标志位 TITI0 允许发送>TI1 发送完成后…

【全网最全】2024电工杯数学建模A题54页A题保奖成品论文+配套代码

您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片链接,那是获取资料的入口! 【全网最全】2024电工杯数学建模A题成品论文前三题完整解答matlabpy代码等(后续会更新成品论文)「首先来看看目前已有的资料&am…

出书,是「盖你自己的房子」你知道吗?

出书是「盖你自己的房子」 尊敬的出书盟友: 你好!我希望这封信能够激发您对出书和阅读的热情。 在当今信息爆炸的时代,每个人都有机会分享自己的故事、思想和知识。而书籍作为一种流传百年的媒体,依旧承载着无限的力量和影响力…

Java——接口后续

1.Comparable 接口 在Java中,我们对一个元素是数字的数组可以使用sort方法进行排序,如果要对一个元素是对象的数组按某种规则排序,就会用到Comparable接口 当实现Comparable接口后,sort会自动调用Comparable接口里的compareTo 方法…

C++的类和对象

C面向对象的三大特性:封装,继承,多态 万事万物皆可为对象,有其相应的属性和行为 一、封装 1.1 封装的意义 将属性和行为作为一个整体,表现生活中的事物 将属性和行为加以权限控制 在设计类的时候,属性…

Sql语句DQL操作 查询操作单表 多表 子表(嵌套)

DQL 查询语句 查询指定的列 **语法 : ** SELECT [查询列表] FROM 表名结果可以是:表格中的字段,常量,表达式,函数查询的结果是虚拟表格,不可以操作 是只读的可以对查询结果进行 算术运算( - * /);**特点: ** 查询的列表可以是:表中的字段,常量,表达式,函数查询的结果是一个虚…

深入理解 Spring 上下文(Context)层次结构

前言 在使用 Spring 框架进行应用程序开发时,Spring 上下文(Context)是一个非常重要的概念。Spring 上下文提供了一个环境,用于管理应用程序中的对象(通常称为 Bean)及其之间的依赖关系。在复杂的应用程序…

数据仓库与数据挖掘实验练习6-7(实验四2024.5.22)

tips: 列出虚拟环境:conda env list 激活虚拟环境:activate hi 进入jupyter-lab:jupyter lab 练习6 1. 处理字符串空格 发现问题: 使用 values 属性查看数据时,如果发现 Name 列没有对齐,很可能是 Name 左…

spring模块(三)Spring AOP(2)使用

一、demo 1、spring项目 &#xff08;1&#xff09;pom <dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.3.13.RELEASE</version></dependency>&l…