文章目录

  • Python自动化办公(Python操作excel/word)
  • 下载图片/视频/压缩包
  • 读/写文件
  • 实例
  • 读取大文件
  • Python操作word(用的较少)
  • 相关包
  • Python操作excel
  • 相关包推荐openpyxl
  • 打开excel获取并选择sheet
  • 获取单元格数据
  • 打开excel获取并选择sheet


Python自动化办公(Python操作excel/word)

下载图片/视频/压缩包

发送网络请求下载图片/视频/压缩包

import requests
res =requests.get("https://alifei03.cfp.cn/creative/vcg/veer/1600water/veer-310451812.jpg")#拿到图像链接进行请求下载
print(res.content)#打印一下图片存储的原始字节类型
with open("testpic.jpg",mode="wb") as f:#图片/视频/压缩包mode="wb"!
    f.write(res.content)#解析写入得到图片

读/写文件

  • r : 适合读文本
  • rb :适合图片/视频/压缩包
  • w :传入字符串python win32 word设置表格宽度_数据自动根据encoding转换字节python win32 word设置表格宽度_数据存储
  • wb : 传入字节python win32 word设置表格宽度_数据存储(在网上拿到的图片/视频/压缩包数据都是字节(例如前面提到的res.content),就适合用wb的方式进行存储)

实例

name = "小杰"
love = "你"
with open("test01.txt",mode="w",encoding="utf-8") as f:
    f.write(name)
with open("test02.txt",mode="wb") as f :
    love_data = love.encode("utf-8")#wb模式必须要把存储的数据转换成字节才能进行存储
    f.write(love_data)

读取大文件

with open("test.txt",mode="rb") as f:
    file_content =f.read  #将读取到的数据存储到内存,这种方法读的内存会不够用,读到的数据是创建的一个临时io.Buffer对象
    print(file_content)
# #优解
with open("test.txt",mode="rb") as f2:
    for line in f2:
        data = line.strip()#取出每行末尾的换行
        if not data:
            continue
        print(data)

Python操作word(用的较少)

相关包

pip install python-docx

Vs Code 中可下载拓展open后右键open with default application

import docx
obj = docx.Document("test\本科学生自愿离校返乡承诺书.docx")#打开需要读取的word文件并且创建object对象
p1 = obj.paragraphs[0]#先读取一个段落试试看
print(p1)#得到的p1依然是一个对象
print(p1.text)#拿到p1里的数据
everyp1 = p1.runs#每一行有不同样式可以分别拿到
print(everyp1)#拿到的是列表里面放的不同的对象
for i in everyp1:
    print(i.text)
for p in obj.paragraphs:#还记得大文件的读取方法吗?一下全部读出来很占内存,所以采用这种方法
    print(p.style.name,p.text) #p.style.name是对应文字的样式

import docx
from docx.shared import Pt#设置字体大小需要导入的相关包
from docx.enum.text import WD_ALIGN_PARAGRAPH  #字体居中等样式相关包
obj = docx.Document()#这里仅创建对象
p1 = obj.add_paragraph(text="重邮",style="Title") #设置内容及几级标题Title/Heading 1/Heading 2......(Heading后注意空格后加数字)
p1.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER#设置p1居中
p2 = obj.add_paragraph(style="Heading 1")#p2采用另一种方法,创建对象后,通过run方法添加内容
p2.add_run(text="光电")
p2.add_run(text="半导体")
p3 = obj.add_paragraph()
r1 = p3.add_run(text="移动")
r2 = p3.add_run(text="联通")
r2.font.size = Pt(20)#设置r2字体大小为20
p4 = obj.add_paragraph()
r4 = p4.add_run()
r4.add_picture("D:\爬虫\Vscode\自动化办公\wallhaven-0wz1p6_1280x720.png")
obj.save("test.docx")#最后做保存

Python操作excel

相关包推荐openpyxl

pip install openpyxl

打开excel获取并选择sheet
from openpyxl import load_workbook
wb = load_workbook("D:\爬虫\Vscode\自动化办公\sasa.xlsx")#创建workbook对象打开excel
#####方式一######
sheets = wb.sheetnames#获取所有sheet名称
print(sheets)#打印发现,以列表的方式进行存储
sheet = wb["Sheet1"]#通过sheet名称获取对象
cell = sheet.cell(3,2)#获取单元格内的数据
print(cell.value)
#######方式二(推荐)#########
sheetobj = wb.worksheets#得到sheet对象以列表的方式进行存储
sheet = wb.worksheets[0]#选择一个sheet进行操作
cell = sheet.cell(3,2)#获取单元格内的数据
print(cell.value)
获取单元格数据

基本上只用对行进行操作,拿到行后通过对列表操作的方法进行单元格的取值

from openpyxl import load_workbook
wb = load_workbook("D:\爬虫\Vscode\自动化办公\sasa.xlsx")#创建workbook对象打开excel
sheetobj = wb.worksheets#得到sheet对象以列表的方式进行存储
sheet = wb.worksheets[0]#选择一个sheet进行操作
cell_list = sheet[3]#读取第三行的数据,以列表的方式进行存储
for cell in cell_list:
    print(cell.value)#获取第三行每一个单元格的内容
#####读取所有行######
for row in sheet.rows:
    print(row[1].value)#拿到每一行第一列的数据
########读取某些行#######
for row in sheet.iter_rows(min_row=2,max_row=5):
    print(row[1].value)

打开excel获取并选择sheet
import os
from openpyxl import load_workbook
from openpyxl import workbook
base_dir = os.path.dirname(os.path.abspath(__file__))#获取当前py文件的文件夹的路径
excel_path = os.path.join(base_dir,"data.xlsx")#选择excel文件的保存路径
if os.path.exists(excel_path):
    wb = load_workbook(excel_path)
    sheet = wb.worksheets[0]
    next_row_index = sheet.max_row + 1#已经存在excel文件的时候的操作
else:
    wb = workbook.Workbook()
    sheet = wb.worksheets[0]
    next_row_index = 1#无excel文件时的操作
sheet.cell(next_row_index,1).value = "hello"
sheet.cell(next_row_index,2).value = 5
wb.save(excel_path)