本文目录导读:

- 使用
pyautogui模拟键盘输入 - 使用
keyboard库 - 使用
subprocess自动化交互 - 使用
pexpect处理交互式程序 - 自动化Web表单输入
- 使用
pyinputplus库 - 完整示例:自动化脚本收集数据
- 安装所需库
- 注意事项
我来介绍几种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
注意事项
- 权限问题:某些自动化操作需要管理员权限
- 速度控制:适当添加延时,避免操作太快
- 异常处理:添加错误处理机制
- 窗口焦点:确保目标窗口处于活动状态
- 安全考虑:不要在公共场所运行自动输入敏感信息的脚本
选择哪种方法取决于你的具体需求:
- 桌面应用自动化:推荐
pyautogui - Web自动化:推荐
selenium - 命令行交互:推荐
pexpect - 快速测试:推荐
keyboard库