本文目录导读:

- 使用
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库
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播