Python案例如何自动化输入内容?

wen python案例 25

本文目录导读:

Python案例如何自动化输入内容?

  1. 使用 pyautogui 模拟键盘输入
  2. 使用 keyboard
  3. 使用 subprocess 自动化交互
  4. 使用 pexpect 处理交互式程序
  5. 自动化Web表单输入
  6. 使用 pyinputplus
  7. 完整示例:自动化脚本收集数据
  8. 安装所需库
  9. 注意事项

我来介绍几种Python自动化输入内容的方法,包括不同的场景和工具:

使用 pyautogui 模拟键盘输入

import pyautogui
import time
# 等待几秒,让你切换到目标窗口
time.sleep(3)
# 输入文本
pyautogui.write('Hello, World!', interval=0.1)  # interval控制输入速度
# 输入多行文本
pyautogui.write('第一行\n第二行\n第三行')
# 输入特定按键
pyautogui.press('enter')  # 按回车
pyautogui.hotkey('ctrl', 'c')  # 按Ctrl+C
pyautogui.hotkey('ctrl', 'v')  # 按Ctrl+V

使用 keyboard

import keyboard
import time
# 等待几秒
time.sleep(2)
# 写入文本
keyboard.write('Hello World!')
# 按下按键
keyboard.press_and_release('enter')
keyboard.press_and_release('ctrl+c')
# 等待按键触发
keyboard.wait('esc')  # 等待按ESC键继续
# 添加热键
keyboard.add_hotkey('ctrl+shift+a', lambda: print('热键触发'))

使用 subprocess 自动化交互

import subprocess
# 启动一个进程并自动输入
process = subprocess.Popen(
    ['python'],  # 或其他应用程序
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
    text=True
)
# 自动输入内容
process.stdin.write('print("Hello")\n')
process.stdin.flush()
# 发送更多输入
commands = [
    'x = 10',
    'y = 20',
    'print(x + y)'
]
for cmd in commands:
    process.stdin.write(cmd + '\n')
    process.stdin.flush()
# 关闭输入
process.stdin.close()
# 获取输出
output = process.stdout.read()
print(f"程序输出: {output}")

使用 pexpect 处理交互式程序

import pexpect
# 启动交互式程序
child = pexpect.spawn('python')
# 等待提示符
child.expect('>>>')
# 自动输入命令
child.sendline('print("Hello World")')
child.expect('>>>')
print(child.before.decode())  # 打印输出
# 连续输入
commands = [
    'x = 5',
    'y = 3',
    'print(f"Sum: {x + y}")',
    'exit()'
]
for cmd in commands:
    child.sendline(cmd)
    child.expect(['>>>', pexpect.EOF], timeout=5)

自动化Web表单输入

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
# 启动浏览器
driver = webdriver.Chrome()
# 打开网页
driver.get('https://example.com/login')
# 找到输入框并自动填写
username_input = driver.find_element(By.ID, 'username')
username_input.send_keys('admin')
password_input = driver.find_element(By.ID, 'password')
password_input.send_keys('password123')
# 自动提交表单
submit_button = driver.find_element(By.ID, 'submit')
submit_button.click()
# 或者使用回车键
password_input.send_keys(Keys.RETURN)
time.sleep(2)
driver.quit()

使用 pyinputplus

import pyinputplus as pyip
# 自动输入验证
response = pyip.inputStr('请输入文本: ', blank=True)
print(f"输入: {response}")
# 自动选择选项
choice = pyip.inputMenu(['选项A', '选项B', '选项C'], numbered=True)
print(f"选择: {choice}")
# 自动输入数字
number = pyip.inputInt('请输入数字: ', min=0, max=100)
print(f"数字: {number}")

完整示例:自动化脚本收集数据

import pyautogui
import time
import csv
from datetime import datetime
class AutoInputManager:
    def __init__(self):
        self.data = []
    def simulate_typing(self, text, delay=0.05):
        """模拟人工打字"""
        pyautogui.write(text, interval=delay)
    def collect_data_from_screen(self, positions):
        """从屏幕特定位置收集数据"""
        for name, (x, y) in positions.items():
            pyautogui.click(x, y)
            time.sleep(0.5)
            # 模拟选择并复制
            pyautogui.hotkey('ctrl', 'a')
            pyautogui.hotkey('ctrl', 'c')
            # 获取剪贴板内容
            # 这里需要额外处理,实际项目中可以使用 pyperclip
            print(f"{name}: 已复制")
    def auto_fill_form(self, form_data):
        """自动填写表单"""
        for field, value in form_data.items():
            pyautogui.write(value)
            pyautogui.press('tab')
            time.sleep(0.2)
    def save_to_csv(self, filename='output.csv'):
        """保存数据到CSV"""
        if self.data:
            with open(filename, 'w', newline='') as f:
                writer = csv.DictWriter(f, fieldnames=self.data[0].keys())
                writer.writeheader()
                writer.writerows(self.data)
# 使用示例
if __name__ == "__main__":
    manager = AutoInputManager()
    # 等待切换窗口
    print("请在5秒内切换到目标窗口...")
    time.sleep(5)
    # 自动填写表单
    form_data = {
        '姓名': '张三',
        '年龄': '28',
        '电话': '13800138000',
        '邮箱': 'zhangsan@example.com'
    }
    manager.auto_fill_form(form_data)
    print("表单已自动填写完成!")

安装所需库

# 安装基本依赖
pip install pyautogui keyboard pexpect selenium pyinputplus
# 可选
pip install pyperclip pillow opencv-python

注意事项

  1. 权限问题:某些自动化操作需要管理员权限
  2. 速度控制:适当添加延时,避免操作太快
  3. 异常处理:添加错误处理机制
  4. 窗口焦点:确保目标窗口处于活动状态
  5. 安全考虑:不要在公共场所运行自动输入敏感信息的脚本

选择哪种方法取决于你的具体需求:

  • 桌面应用自动化:推荐 pyautogui
  • Web自动化:推荐 selenium
  • 命令行交互:推荐 pexpect
  • 快速测试:推荐 keyboard

抱歉,评论功能暂时关闭!