Python————办公自动化
背景: 随着日常的工作量逐渐变大,基本很多都是重复性的工作。虽然现在有很大办公软件能够在一些方面提高工作效率,但无法解决重复性的工作。这时就需要一种能够重复利用的工具,解决这类办法编程是一种很好的选择。在python这门编程语言提供了很多三方库来支持办公自动化操作。
文件的读写步骤:
打开文件——>读/写文件————关闭文件释放资源
文件的相对路径:指相对于当前工作区的路径
文件的绝对路径:指文件从根目录一个完整的路径
1. 纯文本文件的读写
-
对于纯文本文件的操作主要操作的是
.txt
为扩展名的文件。这种文件只能够是字符,不能够插入图片、链接、音频等。读文件:
# 打开文件 file = open('resources/致橡树.txt', encoding='utf-8') # 读取文件 read = file.read() print(read) # 打印文件 # 释放资源 file.close()
-
防止读文件出错未释放资源
try: # 打开文件 file = open('resources/致橡树.txt', encoding='utf-8') # 读取文件 read = file.read() print(read) # 打印文件 # 释放资源 finally: file.close()
-
自动释放资源
with open('resources/致橡树.txt', 'r', encoding='utf-8') as file: # enconding:设置编码方式,不符合原文编码会出现解码错误
read = file.readline() # 每次读取一行
while read: # 读到空行时结束
print(read, end='') # 每行文本末尾自带换行符,不需在换行
read = file.readline()
写文件:
mode='r' # 读文件
mode='rb' # 读二进制文件
mode='w' # 写文件,会把源文件进行覆盖
mode='wr' # 写二进制文件
mode='a' # 追加
with open('resources/小雨康桥的寺.txt', 'w', encoding='utf-8') as file:
file.write('好好学习')
file.write('\n天天向上')
2. CSV文件的读写
- csv文件叫逗号分隔值文件,指一种以逗号作为分隔符的文件。它也是一种纯文本文件,常用于数据的存储。但如果以其它符号作为文本文件的分隔符也是可以的。
- 在python种提供了一个csv模块来支持csv文件的读写操作
读csv文件
import csv
with open('resources/小雨康桥的寺.txt', 'r', encoding='utf-8') as file:
reader = csv.reader(file) # 返回一个可迭代对象
for text in reader:
print(text) # 返回一个列表
""" ['好好学习']
['天天向上']
"""
写csv文件
import csv
# newline='',写入不换行
with open('resources/小雨康桥的寺.txt', 'w', encoding='utf-8', newline='') as file:
writer = csv.writer(file)
writer.writerow([1, 2, 3]) # 按行写入,参数是一个可迭代对象,常用列表、元组
writer.writerows([[4, 5, 6], [7, 8, 9]]) # 一次性写入多行
"""
1,2,3
4,5,6
7,8,9
"""
3. Excel文件的读写
-
Excel文件的读写需要用到三方库
-
xlrd :读Excel 文件
-
xlwt:写Excel 文件
-
openpyxl:支持同时读取Excel文件
-
Excel文件包括两种以
.xls
/.xlsx
为后缀名的文件,目前主要以.xlsx
为后缀名的文件
读excel文件
-
读exvcel文件 的步骤:打开工作簿(可以有很多工作表)-——>获取工作表————>获取每一个工作表单位里的值
xlrd模块读excel文件
"""现在的xlrd以不在支持以.xlsx为后缀名的读操作。可以在安装的时候指定版本安装。pip install xlrd=1.2.0"""
import xlrd
wb = xlrd.open_workbook('data/四班成绩.xlsx') # 创建一个workbook对象
print(wb.sheet_names()) # 获取工作表单名
sheet = wb.sheet_by_name(wb.sheet_names()[1]) # 得到工作表对象
print(sheet.nrows, sheet.ncols) # 获取工作表的行数和列数
for row in range(sheet.nrows):
for col in range(sheet.ncols):
value = sheet.cell(row, col).value # 从单元格对象中获取每个单元格的值
print(value, end='\t')
print() # 打印完一行实在换行。
- openpyxl读Excel文件
import openpyxl
wb = openpyxl.load_workbook('data/四班成绩.xlsx') # 加载文件
sheet = wb.worksheets[1]
for row in range(1, sheet.max_row): # 索引位置从1开始
for col in range(1, sheet.max_column):
value = sheet.cell(row, col).value
print(value, end='\t')
print()
xlwt写excel文件
import xlwt
wb = xlwt.Workbook()
"""当出现没有代码提示可以使用,# type: 对象类型"""
sheet = wb.add_sheet('测试') # type: xlwt.Worksheet
# def write(self, r, c, label="", style=Style.default_style):
sheet.write(0, 0, '学号')
sheet.write(0, 1, '姓名')
sheet.write(0, 2, '联系方式')
wb.save('data/测试.xlsx')
openpyxl写Excel文件
import openpyxl
wb = openpyxl.Workbook()
# sheet = wb.create_sheet('班级名单') # 创建一个工作表
sheet = wb.active # 获取当前是sheet
sheet.title = '班级名单'
sheet.cell(1, 1, '姓名') # 读写都用sheet.cell(),传入参数只有row和col表示读,有row col value表示写操作
sheet.cell(1, 2, '学号') # 行列索引从1开始
- 简单小结:但遇到
.xls
文件用xlrd xlwt进行读写操作,.xlsx
文件用openoyxl进行读写操作。对于文件既要读又要写的操作用openpyxl
4. Word文件的读写
- Word文件也是日常生活中使用非常平凡的文件之一。以
.DOC和
.DOCX`为后缀名的文件。 - 用python-DOCX操作Word文件
from docx import Document
from docx.shared import Inches, Pt
from docx.document import Document as Doc
# 创建一个document对象
document = Document() # type: Doc
document.add_heading('无聊的只剩下写代码', 0) # 标题
p = document.add_paragraph('A plain paragraph having some ') # 段落
p.add_run('bold').bold = True # 添加‘bold’并加粗
p.add_run(' and some ')
p.add_run('italic.').italic = True # 添加‘italic’并加粗
document.add_heading('Heading, level 1', level=1) # 添加一级标题
document.add_paragraph('Intense quote', style='Intense Quote') # 添加段落并附上样式
document.add_paragraph(
'first item in unordered list', style='List Bullet'
)
document.add_paragraph(
'first item in ordered list', style='List Number'
)
document.add_picture('resources/7.jpg', width=Inches(1.25))
records = (
(3, '101', 'Spam'),
(7, '422', 'Eggs'),
(4, '631', 'Spam, spam, eggs, and spam')
)
table = document.add_table(rows=1, cols=3) # 创建表格
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '姓名'
hdr_cells[1].text = '学号'
hdr_cells[2].text = '班级'
for qty, id, desc in records:
row_cells = table.add_row().cells
row_cells[0].text = str(qty)
row_cells[1].text = id
row_cells[2].text = desc
document.add_section() # 添加分节符
p = document.add_paragraph('明天会更好!')
document.add_page_break() # 添加分页符
document.save('demo.docx')
- Word文件的操作可以节约大量的重复的工作,对模板的操作比较快。只需要设置相应的变量替换原来的值即可。
5. PDF文件的读写
- 当下载一个PDF文件是无法编辑只能给你阅读,一般想要修改又还要需要转换为Word.才能进行修改。
- python有一个叫做PyPDF2
将一个PDF文件的内容写入另一个PDF文件中并加密
import PyPDF2
reader = PyPDF2.PdfFileReader(path)
writer = PyPDF2.PdfFileWriter()
for page_num in range(reader.numPages): # 获取每一页的内容
writer.addPage(reader.getPage(page_num)) # 将一个PDF文件的页面内容写入到另一个文件中
writer.encrypt('332335') # 加密
with open(file_name, 'wb') as file:
writer.write(file)
简单总结
python对于办公自动化一个非常号的好给工具,主要得益于后面有三方库的支持。办公自动化为日常的工作节约了大量的时间,不要把时间让费到重复的工作上去。对于Excel文件的处理办公自动化更能表现出强大的优势,效率也比较高。