影刀RPA深度教程:Python协同开发指南
影刀RPA深度教程Python协同开发指南影刀的指令覆盖不了所有需求。遇到复杂数据处理、加密签名、调用第三方库时用Python协同。这篇文章把Python协同讲透附带3个完整实战案例。先装好环境www.yingdao.com 下载社区版免费。Python环境配置影刀内置了Python环境不需要自己安装。但第三方库需要手动安装打开影刀客户端 → 菜单 → Python在弹出的pip安装界面输入库名如requests点安装第一部分Python代码指令的基本用法基本结构影刀里的Python代码指令要求你写一个main函数这是入口。defmain(args):# args 是影刀传进来的参数字典类型nameargs.get(name)# 取参数resultf你好{name}# 处理逻辑![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/12122d5ed7c24163a62dc05d600956f4.png#pic_center)return{result:result}# 返回值必须是字典在影刀里配置指令Python代码 代码贴上面的代码 参数{name: 张三} ← 这就是 args 返回值保存到变量py_result ← py_result 是字典取 py_result[result]第二部分安装和使用第三方库安装第三方库店群矩阵自动化突破运营极限影刀里安装第三方库有两种方式方式1图形界面推荐影刀客户端菜单 → Python → Python包管理 搜索框输入requests 点安装方式2pip命令影刀客户端菜单 → Python → 打开终端 输入pip install requests最常用的5个第三方库库名用途安装命令requests发HTTP请求比影刀指令更灵活pip install requestspandas处理Excel/CSV数据比影刀指令强大10倍pip install pandasopenpyxl操作Excel文件格式、公式、图表pip install openpyxlpython-docx生成Word文档pip install python-docxhashlib内置MD5/SHA1签名计算无需安装第三部分3个完整实战案例案例1用requests发HTTP请求解决影刀HTTP指令做不到的事影刀的HTTP请求指令不支持签名认证比如淘宝API需要的复杂签名用Python的requests库解决。defmain(args):importrequestsimporthashlibimporttime# 从args取参数urlargs.get(url)app_keyargs.get(app_key)app_secretargs.get(app_secret)# 构造签名举例把参数按字母排序后MD5params{app_key:app_key,timestamp:int(time.time()),}sorted_paramssorted(params.items())sign_strapp_secret.join([f{k}{v}fork,vinsorted_params])app_secret signhashlib.md5(sign_str.encode(utf-8)).hexdigest().upper()params[sign]sign# 发请求resprequests.get(url,paramsparams,timeout30)return{status_code:resp.status_code,response_text:resp.text,}在影刀里调用Python代码 参数{ url: https://api.example.com/data, app_key: your_app_key, app_secret: your_app_secret } 返回值保存到result If result[status_code] 200 → 处理 result[response_text]案例2用pandas处理Excel批量数据清洗影刀的Excel指令处理几千行数据还行几万行就慢了。用pandas秒处理。defmain(args):importpandasaspd file_pathargs.get(file_path)# Excel文件路径# 读取Exceldfpd.read_excel(file_path)# 数据清洗删除重复行dfdf.drop_duplicates()# 数据清洗去掉金额列里的空值dfdf.dropna(subset[金额])# 数据清洗金额列如果是字符串去掉¥符号和逗号df[金额]df[金额].astype(str).str.replace(¥,).str.replace(,,).astype(float)# 按金额排序dfdf.sort_values(by金额,ascendingFalse)# 保存结果覆盖原文件或另存为output_pathfile_path.replace(.xlsx,_清洗后.xlsx)df.to_excel(output_path,indexFalse)return{output_path:output_path,row_count:len(df),}在影刀里调用Python代码 参数{file_path: C:\\数据\\原始数据.xlsx} 返回值保存到clean_result 打印日志清洗完成共 str(clean_result[row_count]) 行保存至 clean_result[output_path]案例3用python-docx批量生成Word报告有Excel里的销售数据要给每个销售员生成一份Word格式的销售报告。defmain(args):fromdocximportDocument nameargs.get(name)# 销售员姓名total_amountargs.get(total_amount)# 总销售额order_countargs.get(order_count)# 订单数output_dirargs.get(output_dir)# 输出目录# 打开模板文档提前做好一个模板.docx里面用占位符docDocument(f{output_dir}\\模板.docx)# 替换模板里的占位符![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/5308fb46664c4c178ca360d267447dcd.png#pic_center)forparaindoc.paragraphs:para.textpara.text.replace({姓名},name)para.textpara.text.replace({总销售额},str(total_amount))para.textpara.text.replace({订单数},str(order_count))# 保存为个人报告output_pathf{output_dir}\\{name}_销售报告.docxdoc.save(output_path)return{output_path:output_path}在影刀里循环调用给每个人生成报告启动Excel读取销售数据.xlsx 读取全部内容保存到sales_data ForEach循环sales_data从第二行开始 → Python代码 参数{ name: loop_item[0], total_amount: loop_item[1], order_count: loop_item[2], output_dir: C:\\报告 } 返回值保存到gen_result → 打印日志已生成 gen_result[output_path]第四部分Python与影刀的数据传递args参数影刀→Python影刀调用Python时参数是一个JSON字符串在Python里用args.get(key)取值。注意类型转换defmain(args):# 影刀传过来的数字在Python里可能是字符串要转类型pricefloat(args.get(price))# 转成浮点数countint(args.get(count))# 转成整数![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1f107af24a344e1e976bd1eadcb8bf62.png#pic_center)nameargs.get(name)# 字符串不需要转return返回值Python→影刀Python的return必须是一个字典影刀接收后可以用获取JSON对象属性指令取值。defmain(args):# 返回多个值return{status:success,data:[1,2,3],[video(video-PF5NOzPr-1783010811584)(type-csdn)(url-https://live.csdn.net/v/embed/524992)(image-https://v-blog.csdnimg.cn/asset/b59aed2f01d4fe8583467562aaf4dcfd/cover/Cover0.jpg)(title-temu店群自动化报活动案例)]message:处理完成}在影刀里取返回值获取JSON对象属性py_result[status] → 保存到status 获取JSON对象属性py_result[data] → 保存到data_list第五部分调试Python代码的方法方法1打印日志最简单defmain(args):nameargs.get(name)print(f接收到的name参数{name})# 这行会输出到影刀的日志面板return{result:name}在影刀日志面板里能看到接收到的name参数张三。方法2先在本地Python环境调试把代码复制到本地Python如IDLE、PyCharm用测试数据跑通再贴到影刀里。方法3捕获异常并返回错误信息defmain(args):try:importrequests resprequests.get(args.get(url),timeout10)return{status:success,data:resp.text}exceptExceptionase:# 返回错误信息而不是让流程直接报错return{status:error,message:str(e)}在影刀里判断If py_result[status] error → 打印日志Python执行失败 py_result[message]第六部分常见报错与解决报错原因解决ModuleNotFoundError第三方库没安装在影刀Python设置里pip installSyntaxErrorPython代码有语法错误先在本地Python环境调试通过再贴过来TypeError: main() missing 1 required positional argumentargs参数没传对检查影刀里参数是否填了正确的JSONKeyError: ‘xxx’args里没有xxx这个key用args.get(xxx)而不是args[xxx]后者在key不存在时会报错返回值不是字典return的值不是dict类型main函数必须return {key: value}格式更多Python协同案例和代码模板可以在 home.linyan.cloud 查找。#影刀RPA #Python协同 #进阶教程 #第三方库作者林焱

相关新闻