影刀RPA深度教程:Python协同开发指南
·
影刀RPA深度教程:Python协同开发指南
影刀的指令覆盖不了所有需求。遇到复杂数据处理、加密签名、调用第三方库时,用Python协同。
这篇文章把Python协同讲透,附带3个完整实战案例。
先装好环境
www.yingdao.com 下载,社区版免费。

Python环境配置:
影刀内置了Python环境,不需要自己安装。但第三方库需要手动安装:
- 打开影刀客户端 → 菜单 → Python
- 在弹出的pip安装界面,输入库名(如
requests),点安装
第一部分:Python代码指令的基本用法
基本结构
影刀里的"Python代码"指令,要求你写一个main函数,这是入口。
def main(args):
# args 是影刀传进来的参数(字典类型)
name = args.get('name') # 取参数
result = f"你好,{name}!" # 处理逻辑

return {'result': result} # 返回值(必须是字典)
在影刀里配置:
指令:Python代码
代码:(贴上面的代码)
参数:{"name": "张三"} ← 这就是 args
返回值保存到变量:py_result ← py_result 是字典,取 py_result['result']
第二部分:安装和使用第三方库
安装第三方库
店群矩阵自动化突破运营极限!
影刀里安装第三方库有两种方式:
方式1:图形界面(推荐)
影刀客户端菜单 → Python → Python包管理
搜索框输入:requests
点"安装"
方式2:pip命令
影刀客户端菜单 → Python → 打开终端
输入:pip install requests
最常用的5个第三方库
| 库名 | 用途 | 安装命令 |
|---|---|---|
requests |
发HTTP请求(比影刀指令更灵活) | pip install requests |
pandas |
处理Excel/CSV数据(比影刀指令强大10倍) | pip install pandas |
openpyxl |
操作Excel文件(格式、公式、图表) | pip install openpyxl |
python-docx |
生成Word文档 | pip install python-docx |
hashlib(内置) |
MD5/SHA1签名计算 | 无需安装 |
第三部分:3个完整实战案例
案例1:用requests发HTTP请求(解决影刀HTTP指令做不到的事)

影刀的HTTP请求指令不支持签名认证(比如淘宝API需要的复杂签名),用Python的requests库解决。
def main(args):
import requests
import hashlib
import time
# 从args取参数
url = args.get('url')
app_key = args.get('app_key')
app_secret = args.get('app_secret')
# 构造签名(举例:把参数按字母排序后MD5)
params = {
'app_key': app_key,
'timestamp': int(time.time()),
}
sorted_params = sorted(params.items())
sign_str = app_secret + ''.join([f'{k}{v}' for k, v in sorted_params]) + app_secret
sign = hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()
params['sign'] = sign
# 发请求
resp = requests.get(url, params=params, timeout=30)
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秒处理。

def main(args):
import pandas as pd
file_path = args.get('file_path') # Excel文件路径
# 读取Excel
df = pd.read_excel(file_path)
# 数据清洗:删除重复行
df = df.drop_duplicates()
# 数据清洗:去掉"金额"列里的空值
df = df.dropna(subset=['金额'])
# 数据清洗:金额列如果是字符串,去掉¥符号和逗号
df['金额'] = df['金额'].astype(str).str.replace('¥', '').str.replace(',', '').astype(float)
# 按金额排序
df = df.sort_values(by='金额', ascending=False)
# 保存结果(覆盖原文件,或另存为)
output_path = file_path.replace('.xlsx', '_清洗后.xlsx')
df.to_excel(output_path, index=False)
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格式的销售报告。
def main(args):
from docx import Document
name = args.get('name') # 销售员姓名
total_amount = args.get('total_amount') # 总销售额
order_count = args.get('order_count') # 订单数
output_dir = args.get('output_dir') # 输出目录
# 打开模板文档(提前做好一个模板.docx,里面用占位符)
doc = Document(f"{output_dir}\\模板.docx")
# 替换模板里的占位符

for para in doc.paragraphs:
para.text = para.text.replace('{姓名}', name)
para.text = para.text.replace('{总销售额}', str(total_amount))
para.text = para.text.replace('{订单数}', str(order_count))
# 保存为个人报告
output_path = f"{output_dir}\\{name}_销售报告.docx"
doc.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')取值。
注意类型转换:
def main(args):
# 影刀传过来的数字,在Python里可能是字符串,要转类型
price = float(args.get('price')) # 转成浮点数
count = int(args.get('count')) # 转成整数

name = args.get('name') # 字符串不需要转
return返回值(Python→影刀)
Python的return必须是一个字典,影刀接收后可以用"获取JSON对象属性"指令取值。
def main(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:打印日志(最简单)

def main(args):
name = args.get('name')
print(f"接收到的name参数:{name}") # 这行会输出到影刀的日志面板
return {'result': name}
在影刀日志面板里能看到接收到的name参数:张三。
方法2:先在本地Python环境调试
把代码复制到本地Python(如IDLE、PyCharm),用测试数据跑通,再贴到影刀里。
方法3:捕获异常并返回错误信息
def main(args):
try:
import requests
resp = requests.get(args.get('url'), timeout=10)
return {'status': 'success', 'data': resp.text}
except Exception as e:
# 返回错误信息,而不是让流程直接报错
return {'status': 'error', 'message': str(e)}
在影刀里判断:
If py_result['status'] == 'error'
→ 打印日志:"Python执行失败:" + py_result['message']
第六部分:常见报错与解决
| 报错 | 原因 | 解决 |
|---|---|---|
| ModuleNotFoundError | 第三方库没安装 | 在影刀Python设置里pip install |
| SyntaxError | Python代码有语法错误 | 先在本地Python环境调试通过再贴过来 |
| TypeError: main() missing 1 required positional argument | args参数没传对 | 检查影刀里"参数"是否填了正确的JSON |
| KeyError: ‘xxx’ | args里没有xxx这个key | 用args.get('xxx')而不是args['xxx'],后者在key不存在时会报错 |
| 返回值不是字典 | return的值不是dict类型 | main函数必须return {'key': value}格式 |
更多Python协同案例和代码模板,可以在 home.linyan.cloud 查找。
#影刀RPA #Python协同 #进阶教程 #第三方库
作者:林焱
更多推荐



所有评论(0)