Python RPA 的三大实现方式

一、Python RPA 的三大实现方式

方式1:使用通用Python库组合(最灵活)

这是最基础的方式,通过组合不同功能的库来构建机器人。

# 常用库矩阵 ├── 控制鼠标键盘:pyautogui, pynput, keyboard ├── 浏览器自动化:selenium, playwright ├── 桌面应用自动化:pywinauto, uiautomation ├── 文件操作:os, shutil, pandas, openpyxl ├── 图像识别:opencv-python, pyautogui(内置) ├── 数据处理:pandas, numpy ├── 网络请求:requests, aiohttp ├── 定时任务:schedule, apscheduler └── 邮件处理:smtplib, email 

方式2:使用专用Python RPA框架

这些框架封装了常见操作,开发效率更高:

  1. Robot Framework(关键字驱动,企业级)
  2. Taskt(.NET为主,但有Python支持)
  3. RPA-Python(新兴的专用库)

方式3:将Python作为胶水语言,控制专业RPA工具

许多商业RPA工具(如UiPath)提供Python SDK或API,可以用Python脚本扩展其功能。


二、实战示例:用Python实现典型RPA任务

示例1:基础的Web自动化(Selenium)

from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import pandas as pd import time defweb_automation_example():"""自动登录网站,下载数据,处理并保存"""# 1. 启动浏览器 driver = webdriver.Chrome() driver.get("https://example.com/login")# 2. 自动登录 driver.find_element(By.ID,"username").send_keys("your_username") driver.find_element(By.ID,"password").send_keys("your_password") driver.find_element(By.ID,"login-btn").click() time.sleep(2)# 3. 导航到数据页面并下载 driver.get("https://example.com/reports")# 模拟点击下载按钮 driver.find_element(By.XPATH,"//button[contains(text(),'导出')]").click() time.sleep(3)# 等待下载完成# 4. 处理下载的Excel文件 df = pd.read_excel("下载的报告.xlsx")# 数据清洗和分析 processed_data = df.groupby("部门").sum() processed_data.to_excel("处理后的报告.xlsx")# 5. 关闭浏览器 driver.quit()print("任务完成!")# 运行if __name__ =="__main__": web_automation_example()

示例2:桌面GUI自动化(pyautogui + pywinauto)

import pyautogui import pywinauto from pywinauto.application import Application import time defdesktop_automation_example():"""自动化Windows应用程序操作"""# 1. 打开记事本(通过pyautogui模拟键盘) pyautogui.hotkey('win','r')# Win+R pyautogui.write('notepad') pyautogui.press('enter') time.sleep(1)# 2. 在记事本中写入内容 pyautogui.write('这是由Python机器人自动生成的内容\n') pyautogui.write(f'当前时间: {time.ctime()}\n')# 3. 使用pywinauto控制应用程序窗口 app = Application(backend="uia").connect(title="无标题 - 记事本") dlg = app.window(title="无标题 - 记事本")# 保存文件 dlg.menu_select("文件(F)->另存为(A)...") time.sleep(1)# 输入文件名 pyautogui.write('auto_generated.txt') pyautogui.press('enter')# 4. 关闭应用程序 dlg.close()# 如果提示保存,选择不保存try: app2 = Application(backend="uia").connect(title="记事本") app2.window(title="记事本").button("不保存(N)").click()except:passprint("桌面自动化完成!")# 运行if __name__ =="__main__": desktop_automation_example()

示例3:综合办公自动化(处理Excel+邮件)

import pandas as pd import openpyxl import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart import os from datetime import datetime defoffice_automation_example():"""每日数据报告自动化流程"""# 1. 从多个Excel文件合并数据 data_frames =[]forfilein os.listdir('销售数据'):iffile.endswith('.xlsx'): df = pd.read_excel(f'销售数据/{file}') data_frames.append(df)# 合并数据 combined_data = pd.concat(data_frames, ignore_index=True)# 2. 数据分析 daily_summary ={'日期': datetime.now().strftime('%Y-%m-%d'),'总销售额': combined_data['销售额'].sum(),'平均订单额': combined_data['销售额'].mean(),'订单数量':len(combined_data),'热门产品': combined_data['产品名称'].mode().iloc[0]ifnot combined_data.empty else'无数据'}# 3. 生成报告 report_df = pd.DataFrame([daily_summary]) report_path =f"日报/销售日报_{datetime.now().strftime('%Y%m%d')}.xlsx" report_df.to_excel(report_path, index=False)# 4. 发送邮件报告 send_email_report(report_path, daily_summary)print(f"日报生成完成:{report_path}")defsend_email_report(report_path, summary):"""发送邮件"""# 邮件配置 sender ="[email protected]" password ="your_password"# 建议使用应用专用密码 receivers =["[email protected]","[email protected]"]# 创建邮件内容 msg = MIMEMultipart() msg['From']= sender msg['To']=", ".join(receivers) msg['Subject']=f"销售日报 - {summary['日期']}"# 正文 body =f""" <h2>销售日报摘要</h2> <p>日期:{summary['日期']}</p> <p>总销售额:¥{summary['总销售额']:,.2f}</p> <p>平均订单额:¥{summary['平均订单额']:,.2f}</p> <p>订单数量:{summary['订单数量']}</p> <p>热门产品:{summary['热门产品']}</p> <p>详细报告请查看附件。</p> """ msg.attach(MIMEText(body,'html'))# 添加附件withopen(report_path,'rb')as f: attachment = MIMEText(f.read(),'base64','utf-8') attachment["Content-Type"]='application/octet-stream' attachment["Content-Disposition"]=f'attachment; filename="{os.path.basename(report_path)}"' msg.attach(attachment)# 发送邮件try: server = smtplib.SMTP_SSL('smtp.example.com',465) server.login(sender, password) server.sendmail(sender, receivers, msg.as_string()) server.quit()print("邮件发送成功!")except Exception as e:print(f"邮件发送失败:{e}")# 运行if __name__ =="__main__": office_automation_example()

三、完整的Python RPA项目架构

""" rpa_robot/ ├── main.py # 主程序入口 ├── config/ │ ├── config.yaml # 配置文件 │ └── credentials.py # 敏感信息(如密码) ├── modules/ │ ├── web_automation.py # Web自动化模块 │ ├── desktop_automation.py # 桌面自动化模块 │ ├── data_processor.py # 数据处理模块 │ └── email_sender.py # 邮件发送模块 ├── utils/ │ ├── logger.py # 日志工具 │ ├── scheduler.py # 定时调度器 │ └── error_handler.py # 错误处理 ├── data/# 数据目录 ├── logs/# 日志目录 └── requirements.txt # 依赖包列表

main.py 示例:

import schedule import time from modules.web_automation import fetch_data from modules.data_processor import process_data from modules.email_sender import send_report from utils.logger import setup_logger logger = setup_logger()defdaily_rpa_task():"""每日自动执行的RPA任务"""try: logger.info("开始执行每日RPA任务")# 1. 从网站获取数据 raw_data = fetch_data()# 2. 处理数据 report = process_data(raw_data)# 3. 发送报告 send_report(report) logger.info("每日任务执行完成")except Exception as e: logger.error(f"任务执行失败: {e}")# 设置定时任务 schedule.every().day.at("09:00").do(daily_rpa_task) schedule.every().hour.do(lambda: logger.info("机器人运行中..."))if __name__ =="__main__": logger.info("RPA机器人启动")# 立即执行一次 daily_rpa_task()# 保持运行,等待定时任务whileTrue: schedule.run_pending() time.sleep(60)# 每分钟检查一次

四、Python RPA的最佳实践

1. 依赖管理

# requirements.txt selenium>=4.0.0 pandas>=1.3.0 openpyxl>=3.0.0 pyautogui>=0.9.0 pywinauto>=0.6.0 schedule>=1.0.0 opencv-python>=4.5.0 requests>=2.25.0 python-dotenv>=0.19.0 # 环境变量管理

2. 错误处理与重试机制

from tenacity import retry, stop_after_attempt, wait_exponential @retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1,min=4,max=10))defunreliable_operation():"""带重试机制的操作"""# 可能会失败的操作pass

3. 图像识别自动化(处理验证码等)

import cv2 import pyautogui import numpy as np deffind_and_click(image_path, confidence=0.8):"""在屏幕上查找图像并点击"""# 截屏 screenshot = pyautogui.screenshot() screenshot = cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2BGR)# 读取模板图像 template = cv2.imread(image_path)# 模板匹配 result = cv2.matchTemplate(screenshot, template, cv2.TM_CCOEFF_NORMED) min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)if max_val >= confidence:# 计算中心点并点击 h, w = template.shape[:2] center_x = max_loc[0]+ w //2 center_y = max_loc[1]+ h //2 pyautogui.click(center_x, center_y)returnTruereturnFalse

4. 使用配置文件管理参数

# config.yamlweb:login_url:"https://example.com/login"username:"robot_user"timeout:30database:host:"localhost"port:3306name:"rpa_data"schedule:daily_report:"09:00"data_backup:"23:00"email:smtp_server:"smtp.gmail.com"smtp_port:587

五、学习路径与资源推荐

学习路径:

  1. 基础阶段:Python基础 → pyautogui(鼠标键盘控制)→ pandas(数据处理)
  2. 进阶阶段:selenium(Web自动化)→ openpyxl(Excel操作)→ smtplib(邮件)
  3. 高级阶段:pywinauto(桌面GUI)→ 图像识别 → 任务调度 → 项目架构

推荐资源:

  • 书籍:《Python自动化办公实战》、《Python自动化运维》
  • GitHub项目
  • 在线课程:Udemy上的"Automate the Boring Stuff with Python"

六、Python RPA vs 专业RPA工具

方面Python RPA专业RPA工具(如UiPath)
灵活性⭐⭐⭐⭐⭐(无限扩展)⭐⭐⭐(受平台限制)
学习曲线⭐⭐⭐(需要编程基础)⭐⭐(图形化,较易上手)
开发速度⭐⭐⭐(代码编写)⭐⭐⭐⭐⭐(拖拽式)
维护成本⭐⭐(需要程序员)⭐⭐⭐(业务人员可维护)
企业级功能⭐⭐(需自行开发)⭐⭐⭐⭐⭐(内置)
成本⭐⭐⭐⭐⭐(免费开源)⭐⭐(商业授权昂贵)

结论建议:

  • 选择Python RPA如果:你已有Python基础、需要高度定制化、预算有限、处理复杂逻辑
  • 选择专业RPA工具如果:团队无编程背景、需要快速上手、需要企业级管理功能、与钉钉/微信等深度集成

对于技术人员,建议从Python开始,因为它能让你深入理解RPA原理,未来无论是使用专业工具还是自研,都有坚实基础。

开始行动:从上面的示例1开始,尝试自动化一个你每天重复的简单任务!当然可以!使用Python实现RPA机器人是完全可行的,而且非常强大。Python拥有丰富的生态库,可以实现各种自动化操作。下面是完整的指南:

一、Python RPA 的三大实现方式

方式1:使用通用Python库组合(最灵活)

这是最基础的方式,通过组合不同功能的库来构建机器人。

# 常用库矩阵 ├── 控制鼠标键盘:pyautogui, pynput, keyboard ├── 浏览器自动化:selenium, playwright ├── 桌面应用自动化:pywinauto, uiautomation ├── 文件操作:os, shutil, pandas, openpyxl ├── 图像识别:opencv-python, pyautogui(内置) ├── 数据处理:pandas, numpy ├── 网络请求:requests, aiohttp ├── 定时任务:schedule, apscheduler └── 邮件处理:smtplib, email 

方式2:使用专用Python RPA框架

这些框架封装了常见操作,开发效率更高:

  1. Robot Framework(关键字驱动,企业级)
  2. Taskt(.NET为主,但有Python支持)
  3. RPA-Python(新兴的专用库)

方式3:将Python作为胶水语言,控制专业RPA工具

许多商业RPA工具(如UiPath)提供Python SDK或API,可以用Python脚本扩展其功能。


二、实战示例:用Python实现典型RPA任务

示例1:基础的Web自动化(Selenium)

from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import pandas as pd import time defweb_automation_example():"""自动登录网站,下载数据,处理并保存"""# 1. 启动浏览器 driver = webdriver.Chrome() driver.get("https://example.com/login")# 2. 自动登录 driver.find_element(By.ID,"username").send_keys("your_username") driver.find_element(By.ID,"password").send_keys("your_password") driver.find_element(By.ID,"login-btn").click() time.sleep(2)# 3. 导航到数据页面并下载 driver.get("https://example.com/reports")# 模拟点击下载按钮 driver.find_element(By.XPATH,"//button[contains(text(),'导出')]").click() time.sleep(3)# 等待下载完成# 4. 处理下载的Excel文件 df = pd.read_excel("下载的报告.xlsx")# 数据清洗和分析 processed_data = df.groupby("部门").sum() processed_data.to_excel("处理后的报告.xlsx")# 5. 关闭浏览器 driver.quit()print("任务完成!")# 运行if __name__ =="__main__": web_automation_example()

示例2:桌面GUI自动化(pyautogui + pywinauto)

import pyautogui import pywinauto from pywinauto.application import Application import time defdesktop_automation_example():"""自动化Windows应用程序操作"""# 1. 打开记事本(通过pyautogui模拟键盘) pyautogui.hotkey('win','r')# Win+R pyautogui.write('notepad') pyautogui.press('enter') time.sleep(1)# 2. 在记事本中写入内容 pyautogui.write('这是由Python机器人自动生成的内容\n') pyautogui.write(f'当前时间: {time.ctime()}\n')# 3. 使用pywinauto控制应用程序窗口 app = Application(backend="uia").connect(title="无标题 - 记事本") dlg = app.window(title="无标题 - 记事本")# 保存文件 dlg.menu_select("文件(F)->另存为(A)...") time.sleep(1)# 输入文件名 pyautogui.write('auto_generated.txt') pyautogui.press('enter')# 4. 关闭应用程序 dlg.close()# 如果提示保存,选择不保存try: app2 = Application(backend="uia").connect(title="记事本") app2.window(title="记事本").button("不保存(N)").click()except:passprint("桌面自动化完成!")# 运行if __name__ =="__main__": desktop_automation_example()

示例3:综合办公自动化(处理Excel+邮件)

import pandas as pd import openpyxl import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart import os from datetime import datetime defoffice_automation_example():"""每日数据报告自动化流程"""# 1. 从多个Excel文件合并数据 data_frames =[]forfilein os.listdir('销售数据'):iffile.endswith('.xlsx'): df = pd.read_excel(f'销售数据/{file}') data_frames.append(df)# 合并数据 combined_data = pd.concat(data_frames, ignore_index=True)# 2. 数据分析 daily_summary ={'日期': datetime.now().strftime('%Y-%m-%d'),'总销售额': combined_data['销售额'].sum(),'平均订单额': combined_data['销售额'].mean(),'订单数量':len(combined_data),'热门产品': combined_data['产品名称'].mode().iloc[0]ifnot combined_data.empty else'无数据'}# 3. 生成报告 report_df = pd.DataFrame([daily_summary]) report_path =f"日报/销售日报_{datetime.now().strftime('%Y%m%d')}.xlsx" report_df.to_excel(report_path, index=False)# 4. 发送邮件报告 send_email_report(report_path, daily_summary)print(f"日报生成完成:{report_path}")defsend_email_report(report_path, summary):"""发送邮件"""# 邮件配置 sender ="[email protected]" password ="your_password"# 建议使用应用专用密码 receivers =["[email protected]","[email protected]"]# 创建邮件内容 msg = MIMEMultipart() msg['From']= sender msg['To']=", ".join(receivers) msg['Subject']=f"销售日报 - {summary['日期']}"# 正文 body =f""" <h2>销售日报摘要</h2> <p>日期:{summary['日期']}</p> <p>总销售额:¥{summary['总销售额']:,.2f}</p> <p>平均订单额:¥{summary['平均订单额']:,.2f}</p> <p>订单数量:{summary['订单数量']}</p> <p>热门产品:{summary['热门产品']}</p> <p>详细报告请查看附件。</p> """ msg.attach(MIMEText(body,'html'))# 添加附件withopen(report_path,'rb')as f: attachment = MIMEText(f.read(),'base64','utf-8') attachment["Content-Type"]='application/octet-stream' attachment["Content-Disposition"]=f'attachment; filename="{os.path.basename(report_path)}"' msg.attach(attachment)# 发送邮件try: server = smtplib.SMTP_SSL('smtp.example.com',465) server.login(sender, password) server.sendmail(sender, receivers, msg.as_string()) server.quit()print("邮件发送成功!")except Exception as e:print(f"邮件发送失败:{e}")# 运行if __name__ =="__main__": office_automation_example()

三、完整的Python RPA项目架构

""" rpa_robot/ ├── main.py # 主程序入口 ├── config/ │ ├── config.yaml # 配置文件 │ └── credentials.py # 敏感信息(如密码) ├── modules/ │ ├── web_automation.py # Web自动化模块 │ ├── desktop_automation.py # 桌面自动化模块 │ ├── data_processor.py # 数据处理模块 │ └── email_sender.py # 邮件发送模块 ├── utils/ │ ├── logger.py # 日志工具 │ ├── scheduler.py # 定时调度器 │ └── error_handler.py # 错误处理 ├── data/# 数据目录 ├── logs/# 日志目录 └── requirements.txt # 依赖包列表

main.py 示例:

import schedule import time from modules.web_automation import fetch_data from modules.data_processor import process_data from modules.email_sender import send_report from utils.logger import setup_logger logger = setup_logger()defdaily_rpa_task():"""每日自动执行的RPA任务"""try: logger.info("开始执行每日RPA任务")# 1. 从网站获取数据 raw_data = fetch_data()# 2. 处理数据 report = process_data(raw_data)# 3. 发送报告 send_report(report) logger.info("每日任务执行完成")except Exception as e: logger.error(f"任务执行失败: {e}")# 设置定时任务 schedule.every().day.at("09:00").do(daily_rpa_task) schedule.every().hour.do(lambda: logger.info("机器人运行中..."))if __name__ =="__main__": logger.info("RPA机器人启动")# 立即执行一次 daily_rpa_task()# 保持运行,等待定时任务whileTrue: schedule.run_pending() time.sleep(60)# 每分钟检查一次

四、Python RPA的最佳实践

1. 依赖管理

# requirements.txt selenium>=4.0.0 pandas>=1.3.0 openpyxl>=3.0.0 pyautogui>=0.9.0 pywinauto>=0.6.0 schedule>=1.0.0 opencv-python>=4.5.0 requests>=2.25.0 python-dotenv>=0.19.0 # 环境变量管理

2. 错误处理与重试机制

from tenacity import retry, stop_after_attempt, wait_exponential @retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1,min=4,max=10))defunreliable_operation():"""带重试机制的操作"""# 可能会失败的操作pass

3. 图像识别自动化(处理验证码等)

import cv2 import pyautogui import numpy as np deffind_and_click(image_path, confidence=0.8):"""在屏幕上查找图像并点击"""# 截屏 screenshot = pyautogui.screenshot() screenshot = cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2BGR)# 读取模板图像 template = cv2.imread(image_path)# 模板匹配 result = cv2.matchTemplate(screenshot, template, cv2.TM_CCOEFF_NORMED) min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)if max_val >= confidence:# 计算中心点并点击 h, w = template.shape[:2] center_x = max_loc[0]+ w //2 center_y = max_loc[1]+ h //2 pyautogui.click(center_x, center_y)returnTruereturnFalse

4. 使用配置文件管理参数

# config.yamlweb:login_url:"https://example.com/login"username:"robot_user"timeout:30database:host:"localhost"port:3306name:"rpa_data"schedule:daily_report:"09:00"data_backup:"23:00"email:smtp_server:"smtp.gmail.com"smtp_port:587

五、学习路径与资源推荐

学习路径:

  1. 基础阶段:Python基础 → pyautogui(鼠标键盘控制)→ pandas(数据处理)
  2. 进阶阶段:selenium(Web自动化)→ openpyxl(Excel操作)→ smtplib(邮件)
  3. 高级阶段:pywinauto(桌面GUI)→ 图像识别 → 任务调度 → 项目架构

推荐资源:

  • 书籍:《Python自动化办公实战》、《Python自动化运维》
  • GitHub项目
  • 在线课程:Udemy上的"Automate the Boring Stuff with Python"

六、Python RPA vs 专业RPA工具

方面Python RPA专业RPA工具(如UiPath)
灵活性⭐⭐⭐⭐⭐(无限扩展)⭐⭐⭐(受平台限制)
学习曲线⭐⭐⭐(需要编程基础)⭐⭐(图形化,较易上手)
开发速度⭐⭐⭐(代码编写)⭐⭐⭐⭐⭐(拖拽式)
维护成本⭐⭐(需要程序员)⭐⭐⭐(业务人员可维护)
企业级功能⭐⭐(需自行开发)⭐⭐⭐⭐⭐(内置)
成本⭐⭐⭐⭐⭐(免费开源)⭐⭐(商业授权昂贵)

结论建议:

  • 选择Python RPA如果:你已有Python基础、需要高度定制化、预算有限、处理复杂逻辑
  • 选择专业RPA工具如果:团队无编程背景、需要快速上手、需要企业级管理功能、与钉钉/微信等深度集成

对于技术人员,建议从Python开始,因为它能让你深入理解RPA原理,未来无论是使用专业工具还是自研,都有坚实基础。

开始行动:从上面的示例1开始,尝试自动化一个你每天重复的简单任务!

Read more

Flutter for OpenHarmony: Flutter 三方库 icon_font_generator 自动化将 SVG 图标集转化为字体文件(鸿蒙矢量资源全自动管理)

Flutter for OpenHarmony: Flutter 三方库 icon_font_generator 自动化将 SVG 图标集转化为字体文件(鸿蒙矢量资源全自动管理)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在 OpenHarmony 应用中,为了保证在不同分辨率屏幕(手机、折叠屏、平板)下图标都能保持绝对清晰,且为了减小 HAP 包体积,使用“字体图标”取代“位图图片”是业界公认的标准方案。 icon_font_generator 是一个强大的命令行工具。它能将一整组 SVG 图标自动打包成一个 .ttf 字体文件,并同步生成 Dart 类。开发者只需关注 SVG 文件的增删,剩余的同步工作全部自动化。 一、全自动构建链路 命令行扫描 强类型访问 assets/ohos_icons/*.svg (原始素材) icon_font_generator

By Ne0inhk
Flutter for OpenHarmony:zxing2 纯 Dart 条码扫描与生成库(不仅是扫码,更是编解码引擎) 深度解析与鸿蒙适配指南

Flutter for OpenHarmony:zxing2 纯 Dart 条码扫描与生成库(不仅是扫码,更是编解码引擎) 深度解析与鸿蒙适配指南

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 扫码(QR Code / Barcode)是现代移动应用最基础的入口之一。 在 Flutter 生态中,很多扫码库依赖原生的 Google ML Kit 或 iOS AVFoundation。这在 Android/iOS 上表现很好,但移植到 OpenHarmony 时,往往因为缺乏对应的鸿蒙原生插件支持而卡壳。 zxing2 是一个基于经典 Java ZXing 库移植的 Pure Dart 实现。它不依赖摄像头的原生预览流(它只负责图像数据的算法处理),也不依赖特定的 OS API。 这使得它成为 OpenHarmony 早期生态中实现扫码功能的救命稻草,或者作为特定场景下(如生成二维码、后台解析图片二维码)的轻量级方案。 一、

By Ne0inhk
Flutter for OpenHarmony:Flutter 三方库 remove_emoji — 提升鸿蒙应用输入与展示的洁净度(适配鸿蒙 HarmonyOS Next ohos)

Flutter for OpenHarmony:Flutter 三方库 remove_emoji — 提升鸿蒙应用输入与展示的洁净度(适配鸿蒙 HarmonyOS Next ohos)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net。 Flutter for OpenHarmony:Flutter 三方库 remove_emoji — 提升鸿蒙应用输入与展示的洁净度(适配鸿蒙 HarmonyOS Next ohos) 在进行 Flutter for OpenHarmony 开发时,我们经常需要处理用户输入的数据。虽然 Emoji 表情符号为社交应用增添了趣味,但在某些特定场景下,比如后台管理系统的用户名保存、银行系统的转账备注、或者是需要进行强制文本格式分析的场合,Emoji 的存在可能会导致乱码、存储报错甚至业务逻辑漏洞。 如何精准地通过代码将复杂的 Emoji 从文本中剔除?remove_emoji 库提供了一套高效、可靠的正则表达式集合,专门用于在鸿蒙平台上清理这些不速之客。今天,我们将探索如何利用该库保持应用数据的纯净。 一、为什么需要移除 Emoji? 1.1 数据库兼容性 传统的

By Ne0inhk

Flutter 三方库 login_client 的鸿蒙化适配指南 - 打造工业级安全登录、OAuth2 自动化鉴权、鸿蒙级身份守门员

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 login_client 的鸿蒙化适配指南 - 打造工业级安全登录、OAuth2 自动化鉴权、鸿蒙级身份守门员 在鸿蒙跨平台应用的网络安全架构中,如何稳健地管理 OAuth2 访问令牌(Access Tokens)与刷新令牌(Refresh Tokens)是衡量应用成熟度的重要指标。如果你厌倦了在每个请求中手动判断 401 错误并递归刷新 Token。今天我们要聊的是 login_client——一个专门为简化现代身份认证流设计的 HTTP 客户端装饰器,正是帮你构建“无感登录、自动续期”体验的核心插件。 前言 login_client 是一套位于 http 或 oauth2 库之上的高阶封装。它的核心使命是:自动拦截未授权请求、静默刷新

By Ne0inhk