影刀RPA新手教程Python协同开发完全指南——从def函数到第三方库影刀本身的指令够做80%的事情但剩下20%需要用Python来处理。比如复杂字符串处理、调用第三方API、操作Excel的高级功能图表、透视表、连数据库做复杂查询。我踩了无数坑才把Python协同这玩意儿搞明白这篇文章全部写进来。先装好环境www.yingdao.com 下载社区版免费。装完去Chrome装影刀插件。界面左边指令区中间流程区右边属性配置区底部日志区。模块一写第一个Python函数最基础格式影刀里的Python代码块必须有一个main(args)函数这是入口。defmain(args):# args 是影刀传进来的字典nameargs[name]# 取影刀变量msgf你好{name}return{msg:msg}# 返回值影刀用 变量:msg 接收在影刀里调用指令Python代码块 代码上面那段代码 传入参数 name 变量:user_name影刀里的变量 保存结果到python_result是一个字典 然后取返回值 变量greeting python_result[msg]最常见的错误错误1忘了returndefmain(args):msghello# 没写return影刀拿到的是None![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/afb4ffde22c2456dbb0ffcd06d72c6c6.png#pic_center)错误2return的不是字典defmain(args):returnhello# 错误必须return一个字典正确写法defmain(args):return{result:hello}模块二操作Excel用pandas店群矩阵自动化突破运营极限场景影刀自带的Excel指令功能有限要做复杂操作多Sheet合并、数据透视、条件格式需要用Python。安装pandas影刀里点Python → “管理库” → 搜索pandas → 安装。完整案例多个Excel文件合并defmain(args):importpandasaspdimportos folder_pathargs[folder_path]# 影刀传进来的文件夹路径all_data[]forfileinos.listdir(folder_path):iffile.endswith(.xlsx):file_pathos.path.join(folder_path,file)dfpd.read_excel(file_path)all_data.append(df)# 合并所有数据result_dfpd.concat(all_data,ignore_indexTrue)# 保存到新文件output_pathos.path.join(folder_path,合并后.xlsx)result_df.to_excel(output_path,indexFalse)return{status:success,output_path:output_path,total_rows:len(result_df)}在影刀里调用指令Python代码块 传入参数folder_path D:\报表\ 保存结果到merge_result 指令弹出提示框 内容 合并完成共 merge_result[total_rows] 行保存至 merge_result[output_path]模块三调用第三方API场景影刀的HTTP请求指令够用但如果要调用需要签名计算的API比如支付宝、微信支付用Python更方便。案例调用有道翻译APIdefmain(args):importrequestsimporthashlibimporttime textargs[text]# 要翻译的文本app_key你的AppKeyapp_secret你的AppSecretsaltstr(int(time.time()))# 计算签名sign_strapp_keytextsaltapp_secret signhashlib.md5(sign_str.encode()).hexdigest()# 发送请求urlhttps://openapi.youdao.com/apiparams{![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/567f465f4a9c4f2eb698bf1d462e8421.png#pic_center)q:text,from:zh-CHS,to:en,appKey:app_key,salt:salt,sign:sign}resprequests.get(url,paramsparams)resultresp.json()return{translation:result[translation][0],status:success}模块四连接MySQL数据库安装pymysql影刀里点Python → “管理库” → 搜索pymysql → 安装。完整案例查询批量插入defmain(args):importpymysql# 连接数据库connpymysql.connect(hostlocalhost,userroot,passwordyour_password,databaseshop,charsetutf8mb4)cursorconn.cursor()try:# 查询cursor.execute(SELECT id, name, price FROM products WHERE price %s,(100,))rowscursor.fetchall()# 批量插入从影刀传进来的数据insert_dataargs[insert_data]# 二维列表sqlINSERT INTO orders (product_id, quantity) VALUES (%s, %s)cursor.executemany(sql,insert_data)conn.commit()# 提交事务return{status:success,query_result:rows,affected_rows:cursor.rowcount}exceptExceptionase:conn.rollback()# 出错回滚return{status:error,message:str(e)}finally:cursor.close()conn.close()# 必须关闭连接模块五发送复杂邮件带HTML附件安装smtplib内置库不需要安装defmain(args):importsmtplibfromemail.mime.textimportMIMETextfromemail.mime.multipartimportMIMEMultipartfromemail.mime.applicationimportMIMEApplication smtp_serversmtp.qq.comsmtp_port465senderyourqq.compassword你的授权码# 不是QQ密码receiversargs[receivers]# 收件人列表subjectargs[subject]html_bodyargs[html_body]attachment_pathsargs[attachment_paths]# 附件路径列表# 构造邮件msgMIMEMultipart()msg[From]sender msg[To], .join(receivers)msg[Subject]subject# HTML正文msg.attach(MIMEText(html_body,html,utf-8))# 添加附件forfile_pathinattachment_paths:withopen(file_path,rb)asf:partMIMEApplication(f.read())part.add_header(Content-Disposition,attachment,filenameos.path.basename(file_path))msg.attach(part)# 发送withsmtplib.SMTP_SSL(smtp_server,smtp_port)asserver:server.login(sender,password)server.send_message(msg)return{status:success,message:邮件发送成功}模块六图像处理截图识别安装pillow影刀里点Python → “管理库” → 搜索pillow → 安装。案例给图片加文字水印defmain(args):fromPILimportImage,ImageDraw,ImageFont image_pathargs[image_path]textargs[watermark_text]output_pathargs[output_path]imgImage.open(image_path)drawImageDraw.Draw(img)# 用系统字体WindowsfontImageFont.truetype(C:/Windows/Fonts/simhei.ttf,36)# 计算文字位置右下角text_width,text_heightdraw.textsize(text,fontfont)ximg.width-text_width-10yimg.height-text_height-10# 写文字半透明黑色draw.text((x,y),text,fontfont,fill(0,0,0,128))img.save(output_path)return{status:success,output_path:output_path}模块七OCR文字识别安装ddddocr免费OCR库影刀里点Python → “管理库” → 搜索ddddocr → 安装。defmain(args):importddddocr image_pathargs[image_path]withopen(image_path,rb)asf:img_bytesf.read()![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/47e625ab8a72478f97fd3ba43f763b1b.png#pic_center)ocrddddocr.DdddOcr()resultocr.classification(img_bytes)return{text:result}比影刀自带的OCR好在哪里免费不需要充值支持英文、数字、中文混合识别识别速度快本地运行不上传云端模块八常见报错与解决报错1ModuleNotFoundError: No module named ‘pandas’原因没安装这个库。解决影刀里点Python → “管理库” → 搜索pandas → 安装。安装后需要重启影刀客户端才能生效。报错2return的不是字典原因影刀要求main(args)必须return一个字典。错误写法defmain(args):returnsuccess# 错误正确写法defmain(args):return{status:success}[video(video-GvpFqxre-1783181907999)(type-csdn)(url-https://live.csdn.net/v/embed/524992)(image-https://v-blog.csdnimg.cn/asset/b59aed2f01d4fe8583467562aaf4dcfd/cover/Cover0.jpg)(title-temu店群自动化报活动案例)]报错3中文乱码原因Python代码里有中文字符串文件编码不对。解决在Python代码块第一行加# -*- coding: utf-8 -*-或者确保所有字符串都用u中文格式Python 2风格但Python 3一般不需要。报错4数据库连接超时原因数据库连接的默认超时时间是30秒网络不好会超时。解决connpymysql.connect(...,connect_timeout60,# 改成60秒read_timeout60)模块九调试Python代码方法1用print输出最简单defmain(args):nameargs[name]print(f[DEBUG] name {name})# 这行会输出到影刀的日志区return{result:name}运行后在影刀底部的日志区域可以看到[DEBUG] name 张三。方法2把中间结果写回Exceldefmain(args):importpandasaspd dataargs[data]print(f收到数据{data})# 先print看一眼# 写到Excel里方便检查![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/5a8d820424814d44a6aac575ea7d2275.png#pic_center)dfpd.DataFrame(data)df.to_excel(D:/debug.xlsx,indexFalse)return{status:success}模块十学习资源Python协同是影刀进阶的必经之路学会了可以做任何事情。如果想看更多Python协同的案例包括PDF处理、验证码识别、机器学习模型调用可以去 home.linyan.cloud 找对应的模板。模块十一速查表库名用途安装命令影刀管理库里搜索pandasExcel/CSV高级操作pandaspymysql连接MySQL数据库pymysqlrequests发送HTTP请求requestspillow图像处理pillowddddocr免费OCR识别ddddocropenpyxlExcel高级操作图表、格式openpyxlsmtplib发送邮件内置不需安装内置jsonJSON处理内置内置常见错误原因解决ModuleNotFoundError库没安装影刀→Python→管理库安装return的不是字典语法错误return {key: value}中文乱码编码问题文件开头加# -*- coding: utf-8 -*-数据库连接超时网络不好增加connect_timeout参数#影刀RPA #Python协同 #RPA进阶 #新手入门作者林焱