目录
前言
Datawhale第39期组队学习
来了!这次选择的是Datawhale开源学习项目——“
基于Python的自动化办公
”,学习周期为7.11-7.24,在此记录初次接触自动化办公的小白学习历程。基于教程写的比较详细,这里的记录只作为补充。
搭环境小记录
(1) conda虚拟环境:data-A
(2)为了方便在jupyterlab中同时运行.ipynb文件和md文件,额外加装notedown
step1.安装查看md的库:
pip install notedown -i https://pypi.douban.com/simple/
step2.找到文件.jupyter/jupyter_notebook_config.py并打开,没有的话就新建
step3.在文件中增加以下内容,然后保存
c.NotebookApp.contents_manager_class = 'notedown.NotedownContentsManager'
(3)报错解决:Unexpected error while saving file xxx/README.md display_priority.j2
对应Terminal写着
jinja2.exceptions.TemplateNotFound: display_priority.j2
,报错的文件在D:\Anaconda\envs\data-A\share\jupyter\nbconvert\templates\compatibility\display_priority.tpl。
打开该文件,将第二行display_priority.j2改成
base/display_priority.j2
学习路线
Task01:文件处理与邮件自动化(7.11-7.13)
·文件路径识别、处理、文件夹的操作理论学习
·文件自动化处理实践
·邮件自动发送理论学习
Task02:Python与excel(7.14-7.16)
Python+Excel自动化(OpenPyXL)
1、安装
pip3 install openpyxl -i https://pypi.douban.com/simple/
2、
读取
读取表格:
openpyxl.load_workbook()
读取WorkSheet对象工作表名称:
wb.sheetnames
读取WorkSheet对象活动表对象:
wb.active
读取WorkSheet对象活动表名称:
wb.active.title
通过Sheet3工作表名称获取工作表对象sheet:
函数方式
sheet=wb.get_sheet_by_name('Sheet3')
或者索引方式
wb['Sheet3']
读取sheet对象工作表的类型:
type(sheet)
读取sheet对象工作表中值的范围:
sheet.dimensions
读取sheet对象工作表中表的大小:
sheet.max_row、sheet.max_column 读取单元格对象:a=sheet['B1']
读取单元格对象的文本内容、行、列、坐标:
a.value、a.row、a.column、a.coordinate
判断是否为空值:
if (not) cell.value
读取多个单元格的值
方法一:对选择区域索引+遍历元组print每一个cell值
方法二:sheet.iter_rows函数 按行获取+遍历元组print每一个cell值
方法三:sheet.iter_cols函数 按列获取+遍历元组print每一个cell值
3、
写入
初始化Workbook对象:
wb = Workbook()
创建sheet表格:
sheet = wb.create_sheet(title='mysheet', index=0)
单元格赋值:
sheet['A1'].value = 'hello world'
保存表格:
wb.save(filename=root_path+'用户行为偏好_1.xlsx')
插入空行/列:
sheet.insert_cols(idx,amount=1)
、
sheet.insert_rows(idx,amount=1)
删除多列/行:
sheet.delete_cols(idx=5, amount=2)
移动:
sheet.move_range('B3:E16',rows=1,cols=-1)
添加求和公式:
sheet['D15'] = '=SUM(D2:D14)'
PS.对于插入公式的excel表格需要自己手动/添加代码再打开该表格,然后
ctrl s
保存下,再运行下面代码才能获取到对应公式计算后的值!!
# 使用 xlwings 打开 excel 文件然后保存 使写入的 公式生效
import xlwings as xw
# 打开工作簿
app = xw.App(visible=False, add_book=False)
wb = app.books.open('用户行为偏好_1.xlsx')
wb.save()
# 关闭工作簿
wb.close()
app.quit()
4、
Excel样式调整
字体样式
设置单个cell字体样式:
font = Font(name='黑体', size=20, bold=True, italic=True, color='FF0000')
设置多个 cell 的字体样式:遍历给每一个 cell 都设置上对应字体样式
cell.font = font
边框样式
设置单个cell边框样式:
边线对象:
side = Side(border_style='double', color='FF000000')
边框对象:
border = Border(left=side, right=side, top=side, bottom=side, diagonal=side, diagonalDown=True, diagonalUp=True)
设置多个 cell 的边框样式:遍历给每一个 cell 都设置上对应边框样式
cell.border = border
单元格背景色
PatternFill 模式:
pattern_fill = PatternFill(fill_type='solid',fgColor="DDDDDD")
+
cell.fill = pattern_fill
GradientFill模式:
gradient_fill = GradientFill(stop=('FFFFFF', '99ccff','000000'))
+
cell.fill = gradient_fil
设置水平居中
alignment = Alignment(horizontal='center', vertical='center')
+
cell.alignment = alignment
设置行高、列宽
行高:sheet.row_dimensions[1].height = 30
列宽:sheet.column_dimensions[‘C’].width = 24
合并、取消合并
合并:
sheet.merge_cells('A1:B2')
取消合并:
sheet.unmerge_cells('A1:B2')
5、
综合练习
(1)将一个表格拆成两个,pandas更方便!!!
方法一:openpyxl
from openpyxl import load_workbook, Workbook
wb = load_workbook(root_path+'业务联系表.xlsx')
sheet = wb.active
cust_info = {'业务经理编号': 'A', '客户名称': 'B', '客户地址': 'C', '客户方负责人': 'D', '性别': 'E', '联系电话': 'F', '备注': 'G'}
cust_info_excel = Workbook()
cust_info_sh = cust_info_excel.active
cust_info_sh.title = '客户信息'
for i in sheet[2]:
if i.value in cust_info:
for cell in sheet[i.coordinate[0]]:
if cell.row == 1:
continue
cust_info_sh[f'{cust_info[i.value]}{cell.row-1}'].value = cell.value
方法二:pandas
import pandas as pd
data = pd.read_excel(root_path+'业务联系表.xlsx', header=1)
cust_info_pd = data[['业务经理编号', '客户名称', '客户地址', '客户方负责人', '性别', '联系电话', '备注']]
cust_info_pd.drop_duplicates(inplace=True)
(2)将两个表格合并成一个
方法:pandas
business_contact = pd.merge(manager_info_pd, cust_info_pd, on='业务经理编号')
manager_info_pd.to_excel(root_path+'业务联系表_pd.xlsx', index=None)
Python+Excel自动化(XLWings)
1、安装
pip3 install xlwings -i https://pypi.douban.com/simple/
pip install akshare -i https://pypi.douban.com/simple/
Task03:Python与word和PDF(7.17-7.19)
. python与word相关的理论知识学习
1、安装库
pip install python-docx -i https://pypi.douban.com/simple/
2、相关代码
新建文档:
doc_1 = Document()
添加标题:
doc_1.add_heading()
新增段落:
paragraph_1 = doc_1.add_paragraph()
处理文字块(如加粗):
paragraph_1.add_run().bold = True
保存文件:
doc_1.save('doc_1.docx')
. python与PDF相关的理论知识学习
1、安装库
pip install PyPDF2 -i https://pypi.douban.com/simple/
pip install pdfplumber -i https://pypi.douban.com/simple/
pip install pdf2image -i https://pypi.douban.com/simple/
pip install PyMuPDF -i https://pypi.douban.com/simple/
2、PDF批量拆分、合并
3、提取文字、提取表格内容、提取图片
4、PDF转换为图片、添加水印、文档加密与解密、页面旋转
其中,转换为图片还需要需要
安装
poppler for Windows(对于windows用户), 并且需要添加环境变量
Task04:简单的Python爬虫(7.20、7.21)
requests库的理论与实践
1、安装:
pip install requests
2、用法
re=requests.get(“https://www.baidu.com”):
发出http请求
re.status_code:
响应的HTTP状态码
re.text:
响应内容的字符串形式
rs.content:
响应内容的二进制形式
rs.encoding:
响应内容的编码
re.text:
用于文本内容的获取、下载
re.content:
用于图片、视频、音频等内容的获取、下载
HTML页面解析与提取方法
1、安装库:
pip install bs4
2、BeautifulSoup对象提取信息:
find():
返回符合条件的首个数据
find_all():
返回符合条件的所有数据
自如公寓数据抓取
36kr信息抓取与邮件发送
1、获取SMTP授权码:Mailbox Settings→Third-party Services→IMAP/SMTP :
EnabledGenerate Authorization Code
2、(作为测试)发送和接收邮箱可以都是自己的邮箱
sender=123456@qq.com
receiver=123456@qq.com
user=123456
password=授权码
Task05:Python操作钉钉自动化(7.22、7.23)
1、新建钉钉群聊(邀请2人+)
2、实战
①文本TEXT
②链接LINK
③markdown类型
④整体跳转ActionCard类型
⑤独立跳转ActionCard类型
⑥FeedCard类型
Task06:其它推荐软件和网页(7.24)
一些好用的小工具(在线网页)
1.All to ALL-格式转化(Link:
https://www.alltoall.net/
)
2.PDF24 Tools-PDF工具(Link:
https://tools.pdf24.org/zh/
)
3.I❤PDF-PDF工具(Link:
https://www.ilovepdf.com/zh-cn
)
4.bigjpg-图片放大工具(Link:
https://bigjpg.com/
)
5.magiceraser-P图去水印(Link:
https://www.magiceraser.io/
)
6.clippingmagic-抠图(Link:
https://zh.clippingmagic.com/
)
