Python处理办公自动化的十大场景(上)

上一篇 / 下一篇  2022-06-07 10:03:43

  在编程世界里,Python已经是名副其实的网红了。曾经一个学汉语言的研究生,问我怎么学Python,因为他们课程论文里需要用到文本分析,用Python来跑数据。我和他说,你看两天语法,就可以上手开干,不会的再查资料。后来这位同学半个月就用Python把论文数据搞好了。
  所以Python最大优势在于容易学,门槛比Java、C++低非常多,给非程序员群体提供了用代码干活的可能性。当然Python能成为大众编程工具,不光光是因为易学,还因为Python有成千上万的工具包,遍布各行各业。
  举十个办公自动化常见的例子,Python都能高效处理。
  1. Python处理Excel数据
  可以使用pandas、xlwings、openpyxl等包来对Excel进行增删改查、格式调整等操作,甚至可以使用Python函数来对excel数据进行分析。
  读取excel表格:
  import xlwings as xw
  wb = xw.Book()  # this will create a new workbook
  wb = xw.Book('FileName.xlsx')  # connect to a file that is open or in the current working directory
  wb = xw.Book(r'C:\path\to\file.xlsx')  # on Windows: use raw strings to escape backslashes

  将matplotlib绘图写入excel表格:
  import matplotlib.pyplot as plt
  import xlwings as xw
  fig = plt.figure()
  plt.plot([1, 2, 3])
  sheet = xw.Book().sheets[0]
  sheet.pictures.add(fig, name='MyPlot', update=True)

  2. Python处理PDF文本
  PDF几乎是最常见的文本格式,很多人有各种处理PDF的需求,比如制作PDF、获取文本、获取图片、获取表格等。Python中有PyPDF、pdfplumber、ReportLab、PyMuPDF等包可以轻松实现这些需求。
  提取PDF文字:
  import PyPDF2
  pdfFile = open('example.pdf','rb')
  pdfReader = PyPDF2.PdfFileReader(pdfFile)
  print(pdfReader.numPages)
  page = pdfReader.getPage(0)
  print(page.extractText())
  pdfFile.close()

  提取PDF表格:
  # 提取pdf表格
  import pdfplumber
  with pdfplumber.open("example.pdf") as pdf:
      page01 = pdf.pages[0] #指定页码
      table1 = page01.extract_table()#提取单个表格
      # table2 = page01.extract_tables()#提取多个表格
      print(table1)

  3. Python处理Email
  在Python中可以使用smtplib配合email库,来实现邮件的自动化传输,非常方便。
  import smtplib
  import email
  # 负责将多个对象集合起来
  from email.mime.multipart import MIMEMultipart
  from email.header import Header
  # SMTP服务器,这里使用163邮箱
  mail_host = "smtp.163.com"
  # 发件人邮箱
  mail_sender = "******@163.com"
  # 邮箱授权码,注意这里不是邮箱密码,如何获取邮箱授权码,请看本文最后教程
  mail_license = "********"
  # 收件人邮箱,可以为多个收件人
  mail_receivers = ["******@qq.com","******@outlook.com"]
  mm = MIMEMultipart('related')
  # 邮件正文内容
  body_content = """你好,这是一个测试邮件!"""
  # 构造文本,参数1:正文内容,参数2:文本格式,参数3:编码方式
  message_text = MIMEText(body_content,"plain","utf-8")
  # 向MIMEMultipart对象中添加文本对象
  mm.attach(message_text)
  # 创建SMTP对象
  stp = smtplib.SMTP()
  # 设置发件人邮箱的域名和端口,端口地址为25
  stp.connect(mail_host, 25)  
  # set_debuglevel(1)可以打印出和SMTP服务器交互的所有信息
  stp.set_debuglevel(1)
  # 登录邮箱,传递参数1:邮箱地址,参数2:邮箱授权码
  stp.login(mail_sender,mail_license)
  # 发送邮件,传递参数1:发件人邮箱地址,参数2:收件人邮箱地址,参数3:把邮件内容格式改为str
  stp.sendmail(mail_sender, mail_receivers, mm.as_string())
  print("邮件发送成功")
  # 关闭SMTP对象
  stp.quit()

  4. Python处理数据库
  数据库是我们常用的办公应用,Python中有各种数据库驱动接口包,支持对数据库的增删改查、运维管理工作。比如说pymysql包对应MySQL、psycopg2包对应PostgreSQL、pymssql包对应sqlserver、cxoracle包对应Oracle、PyMongo包对应MongoDB等等。
  对MySQL的连接查询:
  import pymysql
  # 打开数据库连接
  db = pymysql.connect(host='localhost',
                       user='testuser',
                       password='test123',
                       database='TESTDB') 
  # 使用 cursor() 方法创建一个游标对象 cursor
  cursor = db.cursor()
  # 使用 execute()  方法执行 SQL 查询 
  cursor.execute("SELECT VERSION()")
  # 使用 fetchone() 方法获取单条数据.
  data = cursor.fetchone()
  print ("Database version : %s " % data)
  # 关闭数据库连接
  db.close()

  5. Python处理批量文件
  对很多办公场景来说,批量处理文件一直是个脏活累活,Python可以帮你脱离苦海。Python中有很多处理系统文件的包,比如sys、os、shutil、glob、path.py等等。
  批量删除不同文件夹下的同名文件夹:
  import os,shutil
  import sys
  import numpy as np
  def arrange_file(dir_path0):
    for dirpath,dirnames,filenames in os.walk(dir_path0):
      if 'my_result' in dirpath:
        # print(dirpath)
        shutil.rmtree(dirpath)

  批量修改文件后缀名:
  import os
  def file_rename():
      path = input("请输入你需要修改的目录(格式如'F:\\test'):")
      old_suffix = input('请输入你需要修改的后缀(需要加点.):')
      new_suffix = input('请输入你要改成的后缀(需要加点.):')
      file_list = os.listdir(path)
      for file in file_list:
          old_dir = os.path.join(path, file)
          print('当前文件:', file)
          if os.path.isdir(old_dir):
              continue
          if old_suffix != os.path.splitext(file)[1]:
              continue
          filename = os.path.splitext(file)[0]
          new_dir = os.path.join(path, filename + new_suffix)
          os.rename(old_dir, new_dir)
  if __name__ == '__main__':
      file_rename()


TAG: 软件开发 Python

 

评分:0

我来说两句

日历

« 2024-03-04  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 229695
  • 日志数: 886
  • 建立时间: 2020-08-11
  • 更新时间: 2024-03-04

RSS订阅

Open Toolbar