首页 > 其他分享 >办公自动化 + pyautogui

办公自动化 + pyautogui

时间:2024-09-23 22:50:38浏览次数:3  
标签:pyautogui PyAutoGUI 办公自动化 鼠标 示例 time import

Python 在办公自动化方面有广泛的应用,能够帮助我们自动处理重复性任务、提高效率。以下是几个典型的 Python 办公自动化例子:

1. Excel 自动化处理

使用 pandasopenpyxl 等库可以方便地进行 Excel 表格的读取、处理、生成和修改操作。

示例:批量处理 Excel 表格中的数据
import pandas as pd

# 读取 Excel 文件
df = pd.read_excel('sales_data.xlsx')

# 进行数据处理,比如计算总和、均值等
df['Total_Sales'] = df['Unit_Price'] * df['Quantity']
average_sales = df['Total_Sales'].mean()

# 将结果保存到新的 Excel 文件中
df.to_excel('processed_sales_data.xlsx', index=False)

print(f"Average Sales: {average_sales}")

这个例子可以自动计算销售数据,并将处理后的数据保存为新的 Excel 文件。

2. 自动生成和发送邮件

使用 smtplibemail 模块,结合 pandas 等数据处理库,可以实现批量发送邮件的功能。

示例:批量发送邮件通知
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

def send_email(to_email, subject, body):
    from_email = '[email protected]'
    password = 'your_email_password'

    # 设置邮件内容
    msg = MIMEMultipart()
    msg['From'] = from_email
    msg['To'] = to_email
    msg['Subject'] = subject
    msg.attach(MIMEText(body, 'plain'))

    # 连接到 SMTP 服务器并发送邮件
    server = smtplib.SMTP('smtp.example.com', 587)
    server.starttls()
    server.login(from_email, password)
    server.send_message(msg)
    server.quit()

# 批量发送邮件
emails = ['[email protected]', '[email protected]']
for email in emails:
    send_email(email, 'Monthly Report', 'Please find the attached report for this month.')

这个脚本能够自动化发送批量邮件,非常适合办公场景下通知员工或客户。

3. PDF 文件处理

使用 PyPDF2pdfplumberreportlab 等库,可以对 PDF 文件进行读取、拆分、合并,甚至生成报告等操作。

示例:批量合并 PDF 文件
import PyPDF2

def merge_pdfs(pdf_list, output):
    merger = PyPDF2.PdfMerger()
    for pdf in pdf_list:
        merger.append(pdf)
    with open(output, 'wb') as f_out:
        merger.write(f_out)

pdf_files = ['report1.pdf', 'report2.pdf', 'report3.pdf']
merge_pdfs(pdf_files, 'merged_report.pdf')

该示例展示了如何合并多个 PDF 文件到一个新的文件中,适用于批量合并报告、合同等操作。

4. 自动化文件重命名和整理

使用 osshutil 库,可以批量重命名文件、按日期或类型整理文件夹。

示例:根据文件创建日期重命名文件
import os
import time

folder = 'C:/Documents/'
for filename in os.listdir(folder):
    file_path = os.path.join(folder, filename)
    if os.path.isfile(file_path):
        # 获取文件的创建时间
        create_time = os.path.getctime(file_path)
        formatted_time = time.strftime('%Y%m%d', time.localtime(create_time))
        
        # 构建新的文件名
        new_filename = f"{formatted_time}_{filename}"
        new_file_path = os.path.join(folder, new_filename)
        
        # 重命名文件
        os.rename(file_path, new_file_path)

这个脚本可以根据文件的创建日期自动重命名,非常适合整理杂乱的文件夹。

5. Word 文档自动生成

使用 python-docx 库,可以轻松生成或修改 Word 文档,适用于自动生成合同、报告或信函等办公文档。

示例:自动生成报告文档
from docx import Document

def create_report(employee_name, performance):
    doc = Document()
    
    # 添加标题
    doc.add_heading('Performance Report', 0)
    
    # 添加内容
    doc.add_paragraph(f'Employee: {employee_name}')
    doc.add_paragraph(f'Performance: {performance}')
    
    # 保存文档
    doc.save(f'{employee_name}_report.docx')

# 生成多个员工的报告
employees = {'John Doe': 'Excellent', 'Jane Smith': 'Good'}
for name, performance in employees.items():
    create_report(name, performance)

该脚本能自动为每位员工生成带有自定义信息的 Word 文档。

6. Web 数据抓取与自动化表单提交

使用 requestsBeautifulSoupSelenium,可以实现自动抓取网页数据或自动提交表单等功能。

示例:抓取天气信息
import requests
from bs4 import BeautifulSoup

def get_weather(city):
    url = f'https://example-weather.com/{city}'
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    
    weather = soup.find('div', class_='weather').text
    print(f"Current weather in {city}: {weather}")

# 获取某城市的天气信息
get_weather('New York')

这个脚本可以自动从网页上抓取天气数据,用于自动化获取公共数据。

7. 日历和时间安排管理

使用 caldav 或 Google Calendar API,可以自动读取、创建日历事件,用于日程管理。

示例:通过 Google Calendar API 添加日程
from googleapiclient.discovery import build
from google.oauth2.credentials import Credentials

def create_event(start_time, end_time, summary, description):
    service = build('calendar', 'v3', credentials=creds)
    
    event = {
        'summary': summary,
        'description': description,
        'start': {'dateTime': start_time, 'timeZone': 'America/New_York'},
        'end': {'dateTime': end_time, 'timeZone': 'America/New_York'}
    }
    
    event = service.events().insert(calendarId='primary', body=event).execute()
    print(f"Event created: {event.get('htmlLink')}")

# 创建会议日程
create_event('2024-09-23T10:00:00', '2024-09-23T11:00:00', 'Team Meeting', 'Discuss project updates.')

这个脚本能自动创建 Google Calendar 日程,可以用来进行自动化的日程管理。

总结

Python 在办公自动化中非常强大,可以处理 Excel 和 PDF 文件、批量发送邮件、文件管理、Web 抓取等,大大提高办公效率。这些示例可以帮助你自动完成日常办公任务,减少重复劳动。


pyautogui用法

PyAutoGUI 是一个用于自动化图形用户界面(GUI)操作的 Python 模块,可以模拟键盘按键、鼠标移动和点击等操作。你可以使用它来自动化一些常见的任务,如自动化点击、拖拽、滚动页面等。PyAutoGUI 的优点是它跨平台,支持 Windows、macOS 和 Linux。

PyAutoGUI 常见功能

  • 模拟鼠标操作:移动鼠标、点击、双击、右击、拖拽、滚动。
  • 模拟键盘操作:键盘输入、按下和松开特定按键、组合键操作等。
  • 截取屏幕:截图、识别屏幕上的特定图片。
  • 暂停和失败处理:可设置每次操作的间隔时间,以及在出现错误时自动停止。

安装

pip install pyautogui

基本用法

1. 鼠标操作
  • 移动鼠标到指定位置
import pyautogui

# 移动鼠标到屏幕上的(100, 200)位置,duration控制移动速度
pyautogui.moveTo(100, 200, duration=1)
  • 鼠标点击
# 单击鼠标左键
pyautogui.click()

# 右键点击
pyautogui.rightClick()

# 双击
pyautogui.doubleClick()
  • 鼠标拖拽
# 拖拽鼠标,从当前位置移动到(500, 500)
pyautogui.dragTo(500, 500, duration=2)

# 相对当前位置拖动
pyautogui.dragRel(100, 0, duration=1)  # 向右拖拽100像素
  • 滚动鼠标
# 向上滚动鼠标
pyautogui.scroll(300)

# 向下滚动鼠标
pyautogui.scroll(-300)
2. 键盘操作
  • 输入文本
# 模拟输入字符串
pyautogui.write('Hello, PyAutoGUI!', interval=0.1)
  • 模拟按键操作
# 按下并释放一个按键
pyautogui.press('enter')

# 按住一个按键
pyautogui.keyDown('shift')

# 松开一个按键
pyautogui.keyUp('shift')

# 组合键操作 (如 Ctrl+C)
pyautogui.hotkey('ctrl', 'c')
3. 屏幕截图和图像识别
  • 截取屏幕并保存
# 截取全屏并保存到当前目录
screenshot = pyautogui.screenshot('screenshot.png')
  • 图像匹配与点击
# 在屏幕上找到某个图像
location = pyautogui.locateOnScreen('button.png')

# 如果找到该图像,点击该位置
if location:
    pyautogui.click(location)
4. 防止错误
  • 添加暂停时间
# 每个操作后暂停 0.5 秒
pyautogui.PAUSE = 0.5
  • 快速终止
# 如果鼠标移动到屏幕左上角,程序会自动停止
pyautogui.FAILSAFE = True

示例 1:自动打开应用程序并输入内容

import pyautogui
import time

# 等待几秒
time.sleep(2)

# 打开开始菜单(Windows)
pyautogui.press('win')

# 输入应用程序名称并按回车
pyautogui.write('notepad', interval=0.1)
pyautogui.press('enter')

# 等待应用程序打开
time.sleep(2)

# 在应用程序中输入文本
pyautogui.write('Hello, this is an automated message!', interval=0.1)

示例 2:自动截图并识别按钮位置进行点击

import pyautogui

# 等待几秒钟,打开需要的界面
pyautogui.sleep(3)

# 查找屏幕上的某个按钮图像
button_location = pyautogui.locateOnScreen('button.png')

if button_location:
    pyautogui.click(button_location)
else:
    print('按钮未找到')

拓展用法

  • 窗口自动化:你可以与多个应用程序窗口交互,比如通过 pygetwindow 模块管理和操作窗口。
  • 自动化测试:可用于自动化软件测试,通过模拟真实用户操作,执行测试脚本。
  • 批量处理任务:处理大量数据时,可以自动化操作 Excel、Web 表单、邮件发送等任务。

PyAutoGUI 非常适合自动化日常办公中的重复操作,通过结合鼠标、键盘、屏幕截图的功能,可以实现复杂的自动化任务。


补充

下面我为你生成几个使用 PyAutoGUI 的简单例子,涵盖鼠标、键盘、屏幕截图等常用功能,帮助你更快掌握该模块的使用。

示例 1:模拟鼠标点击和拖拽

这个例子展示如何让鼠标移动到某个位置,然后点击并拖拽。

import pyautogui
import time

# 等待2秒以便你打开目标窗口
time.sleep(2)

# 将鼠标移动到屏幕的 (300, 300) 位置,移动时间为 1 秒
pyautogui.moveTo(300, 300, duration=1)

# 单击鼠标左键
pyautogui.click()

# 拖拽鼠标到屏幕 (500, 500) 位置,拖拽时间为 2 秒
pyautogui.dragTo(500, 500, duration=2)

# 向上滚动鼠标 5 次
pyautogui.scroll(500)

示例 2:自动输入文本

这个例子展示如何自动化输入文本到一个窗口,如记事本或浏览器中的输入框。

import pyautogui
import time

# 等待2秒以便切换到输入窗口
time.sleep(2)

# 模拟输入一段文字
pyautogui.write("Hello, this is an automated message!", interval=0.1)

# 按下 Enter 键
pyautogui.press('enter')

# 再次输入内容
pyautogui.write("PyAutoGUI is really useful for automation tasks.", interval=0.1)

示例 3:使用快捷键组合(Ctrl + S)保存文件

在这个例子中,演示如何模拟组合键,执行快捷操作,如保存文件。

import pyautogui
import time

# 等待2秒切换到目标窗口
time.sleep(2)

# 模拟按下 Ctrl + S 快捷键,保存文件
pyautogui.hotkey('ctrl', 's')

# 等待保存对话框打开后,输入文件名
pyautogui.write('automated_save.txt', interval=0.1)

# 按下 Enter 键保存
pyautogui.press('enter')

示例 4:截图并自动点击特定位置

这个例子展示如何截取屏幕,并在屏幕上找到一个图像后点击该位置。

import pyautogui
import time

# 等待几秒以便打开目标窗口
time.sleep(2)

# 截取全屏并保存为 screenshot.png
screenshot = pyautogui.screenshot('screenshot.png')

# 在屏幕上找到 'button.png' 图像
button_location = pyautogui.locateOnScreen('button.png')

# 如果找到了图像,点击该位置
if button_location:
    pyautogui.click(button_location)
else:
    print('没有找到目标图像')

示例 5:多步骤鼠标和键盘自动化

这是一个完整的自动化例子,展示如何从启动程序到完成表单填写和保存操作。

import pyautogui
import time

# 等待几秒钟准备切换到需要自动化的应用程序
time.sleep(3)

# 打开开始菜单(Windows)
pyautogui.press('win')

# 输入 "notepad" 并按 Enter 键打开记事本
pyautogui.write('notepad', interval=0.1)
pyautogui.press('enter')

# 等待记事本打开
time.sleep(2)

# 输入一些文字
pyautogui.write('This is an automated input using PyAutoGUI.', interval=0.1)

# 模拟按下 Ctrl + S 保存
pyautogui.hotkey('ctrl', 's')

# 在弹出的保存对话框中输入文件名并保存
time.sleep(1)
pyautogui.write('automation_example.txt', interval=0.1)
pyautogui.press('enter')

示例 6:防止快速操作时的错误

为了防止操作过快,导致不可控错误,可以添加暂停时间。

import pyautogui

# 设置每个操作之间暂停0.5秒
pyautogui.PAUSE = 0.5

# 启动记事本并输入文字
pyautogui.press('win')
pyautogui.write('notepad', interval=0.1)
pyautogui.press('enter')

# 输入一段文字并保存
pyautogui.write('This input is slowed down by PyAutoGUI PAUSE.', interval=0.1)

这些简单示例演示了 PyAutoGUI 中常用的鼠标、键盘和截图操作。你可以在日常办公自动化中将这些功能组合起来,例如填写表单、处理重复的窗口操作、截图和文件管理等。


效果直观展示

为了让你在执行程序时能够直观地看到按键效果,你可以结合一些简单的应用程序,比如 "写字板" 或 "画图板",来观察 PyAutoGUI 操作的效果。以下是两个具体的例子:

示例 1:在“写字板”中模拟打字

这个例子展示如何自动打开 Windows 的写字板,并自动输入文字,你可以直观地看到输入效果。

import pyautogui
import time

# 等待3秒以便你手动打开"写字板"(也可以使用自动化启动)
time.sleep(3)

# 自动输入文本
pyautogui.write("PyAutoGUI演示如何自动输入文字!", interval=0.2)

# 模拟换行并继续输入
pyautogui.press('enter')
pyautogui.write("这是一个Python办公自动化的简单例子。", interval=0.2)

示例 2:在“画图板”中模拟绘制图形

这个例子演示如何自动打开 Windows 的“画图板”,并使用 PyAutoGUI 模拟鼠标绘制图形,你可以直接看到画图效果。

import pyautogui
import time

# 等待3秒切换到"画图板"窗口
time.sleep(3)

# 在画图板上画一个矩形
pyautogui.moveTo(400, 400, duration=1)  # 将鼠标移动到起点
pyautogui.mouseDown()  # 按住鼠标左键
pyautogui.moveTo(600, 400, duration=1)  # 画横线
pyautogui.moveTo(600, 600, duration=1)  # 画竖线
pyautogui.moveTo(400, 600, duration=1)  # 画横线
pyautogui.moveTo(400, 400, duration=1)  # 回到起点
pyautogui.mouseUp()  # 松开鼠标左键

# 在画图板上画一条斜线
pyautogui.moveTo(300, 300, duration=1)
pyautogui.dragTo(500, 500, duration=2)

示例 3:在“画图板”中模拟涂鸦

这个例子展示如何让 PyAutoGUI 在 "画图板" 中模拟手动涂鸦的效果,你可以看到鼠标自动画出随机的线条。

import pyautogui
import time
import random

# 等待3秒以便打开"画图板"
time.sleep(3)

# 随机涂鸦 5 次
for i in range(5):
    # 随机生成起点和终点坐标
    start_x = random.randint(100, 600)
    start_y = random.randint(100, 600)
    end_x = random.randint(100, 600)
    end_y = random.randint(100, 600)

    # 移动到起点并按住鼠标左键
    pyautogui.moveTo(start_x, start_y, duration=0.5)
    pyautogui.mouseDown()

    # 拖动鼠标到终点
    pyautogui.dragTo(end_x, end_y, duration=0.5)

    # 松开鼠标左键
    pyautogui.mouseUp()

示例 4:用“画图板”模拟鼠标手绘圆形

这个例子展示如何使用 PyAutoGUI 在“画图板”中绘制圆形。

import pyautogui
import math
import time

# 等待3秒打开"画图板"
time.sleep(3)

# 以 (500, 500) 为中心,画一个半径为100的圆
center_x, center_y = 500, 500
radius = 100

# 设置鼠标到圆的起点(0度位置)
pyautogui.moveTo(center_x + radius, center_y)

# 按下鼠标左键准备开始绘制
pyautogui.mouseDown()

# 绘制圆形(每次移动一点点)
for i in range(361):
    # 计算圆周上每个点的坐标
    angle = math.radians(i)
    x = center_x + radius * math.cos(angle)
    y = center_y + radius * math.sin(angle)
    
    # 移动到下一个点
    pyautogui.moveTo(x, y, duration=0.01)

# 松开鼠标左键
pyautogui.mouseUp()

使用说明

  1. 写字板:可以通过运行程序自动输入文字,模拟打字效果。
  2. 画图板:可以通过绘图功能在 Windows 画图工具中实时看到鼠标移动、绘制矩形、斜线等效果。

这些例子让你可以直观地看到自动化操作的具体效果,非常适合练习 PyAutoGUI 模块的基础应用。你可以将这些功能扩展到自动处理图形、表格或其他办公场景中。

标签:pyautogui,PyAutoGUI,办公自动化,鼠标,示例,time,import
From: https://blog.51cto.com/u_16420155/12092190

相关文章

  • 用pyautogui爬公众号文章
    因为我关注的这个公众号文章内容很简单,基本都是纯文字,所以直接全选复制文本就可以了,用pyautogui比selenium还来得快。摘要:用pyautogui控制公众号文章列表的滚动和点击用pyautogui发送快捷键全选复制网页文本用pyperclip接收剪切板中的文字特别注意:每次打开新网页或......
  • pyautogui+PixPin 用来长截图简直太easy了!
    最近要做几百个样式统一的网页的长截图,试了python+selenium,总是搞不定扫码登录,时间比较赶,就想看看直接使用截图软件手动做,截了几十个实在受不了了~~~~o(>_<)o~~。于是又全网搜python直接操作windows的解决方案,终于发现了pyautgui这个能满足需求的神器。先上官网pyautoguigithu......
  • 基于JAVA办公自动化系统的计算机毕设
    摘  要极光办公自动化系统是针对南开创元信息技术有限公司开发的,专门用于企业内部员工信息交流的软件,其开发过程主要包括前端应用程序的开发和后端数据库的建立两个方面。对于前者要求应用程序功能完备操作简单,对于后者要求建立起数据一致性、完整性和安全性好的数据库。本论......
  • 分享10个免费的Python代码仓库,轻松实现办公自动化!
    为了帮助大家更好地利用Python实现自动化办公,我们精心挑选了10个免费的Python代码仓库。这些仓库不仅包含了实用的脚本和示例,还涵盖了从基础到进阶的各种自动化任务解决方案。无论你是Python编程的初学者,还是希望提升工作效率的职场人士,都能在这些仓库中找到适合自己的资......
  • 基于Node.js+vue榆阳区幼儿园办公自动化系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码毕设程序文件开题报告内容研究背景随着信息技术的飞速发展,办公自动化已成为提升工作效率、优化管理流程的重要手段。在教育领域,尤其是幼儿园这一特殊环境中,传统的办公方式往往效率低下、信息流通......
  • 【Python-办公自动化】1秒解决海量查找替换难题
    欢迎来到"花花ShowPython",一名热爱编程和分享知识的技术博主。在这里,我将与您一同探索Python的奥秘,分享编程技巧、项目实践和学习心得。无论您是编程新手还是资深开发者,都能在这里找到有价值的信息和灵感。自我介绍:我热衷于将复杂的技术概念以简单易懂的方式呈现给大家,......
  • python办公自动化:使用`Python-PPTX`创建和操作表格
    表格是演示文稿中用于组织和显示数据的重要工具。使用Python-PPTX库,您可以在幻灯片中创建和自定义表格,包括设置表格的大小、格式和内容。本节将介绍如何使用Python-PPTX库创建表格并进行各种操作。1创建基本表格在Python-PPTX中,表格是通过add_table()方法创建的。您需要......
  • pyautogui的一些自动化示例,附代码
    以下为您提供一些pyautogui的自动化示例及代码:模拟鼠标点击和移动:importpyautogui#获取屏幕的宽度和高度screen_width,screen_height=pyautogui.size()#将鼠标移动到屏幕中心pyautogui.moveTo(screen_width/2,screen_height/2)#在屏幕中心点击鼠标左键......
  • 【pyautogui】 模拟鼠标、键盘操作库
    【背景】模拟鼠标、键盘操作【问题】1、pyautogui.move和pyautogui.moveTo的区别?pyautogui.moveTo(x=None,y=None,duration=0.0,tween=linearTween)这个函数会将鼠标光标直接移动到指定的屏幕坐标 (x,y)。如果 duration 参数被设置为非零值(以秒为单位),则光标会平滑......
  • 【Python-办公自动化】1秒提取多个word表格汇总至1个excel内
    欢迎来到"花花ShowPython",一名热爱编程和分享知识的技术博主。在这里,我将与您一同探索Python的奥秘,分享编程技巧、项目实践和学习心得。无论您是编程新手还是资深开发者,都能在这里找到有价值的信息和灵感。自我介绍:我热衷于将复杂的技术概念以简单易懂的方式呈现给大家,......