
关于
在 n8n Code 节点中编写 Python 代码。适用于在 n8n 中使用 Python、_input/_json/_node 语法、标准库,或需要了解 n8n Code 节点中 Python 的限制。
name: n8n-code-python description: 在 n8n Code 节点中编写 Python 代码。适用于在 n8n 中编写 Python、使用 _input/_json/_node 语法、使用标准库,或需要了解 n8n Code 节点中 Python 限制的场景。 risk: unknown source: community
Python Code 节点(Beta)
在 n8n Code 节点中编写 Python 代码的专家指导。
重要提示:优先使用 JavaScript
建议:95% 的场景使用 JavaScript。仅在以下情况使用 Python:
- 你需要特定的 Python 标准库函数
- 你对 Python 语法明显更熟悉
- 你在做更适合 Python 的数据转换
为什么优先选择 JavaScript:
- 完整的 n8n 辅助函数($helpers.httpRequest 等)
- Luxon DateTime 库用于高级日期/时间操作
- 无外部库限制
- 更好的 n8n 文档和社区支持
快速开始
# Python Code 节点的基本模板
items = _input.all()
# 处理数据
processed = []
for item in items:
processed.append({
"json": {
**item["json"],
"processed": True,
"timestamp": datetime.now().isoformat()
}
})
return processed
基本规则
- 优先考虑 JavaScript - 仅在必要时使用 Python
- 访问数据:
_input.all()、_input.first()或_input.item - 关键:必须返回
[{"json": {...}}]格式 - 关键:Webhook 数据在
_json["body"]下(不是直接在_json中) - 关键限制:无外部库(无 requests、pandas、numpy)
- 仅标准库:json、datetime、re、base64、hashlib、urllib.parse、math、random、statistics
模式选择指南
与 JavaScript 相同 - 根据用例选择:
对所有项目运行一次(推荐 - 默认)
适用于: 95% 的用例
- 工作方式:无论输入数量如何,代码执行一次
- 数据访问:
_input.all()或_items数组(Native 模式) - 最适合:聚合、过滤、批处理、转换
- 性能:多项目时更快(单次执行)
# 示例:计算所有项目的总和
all_items = _input.all()
total = sum(item["json"].get("amount", 0) for item in all_items)
return [{
"json": {
"total": total,
"count": len(all_items),
"average": total / len(all_items) if all_items else 0
}
}]
对每个项目运行一次
适用于: 仅限特殊场景
- 工作方式:代码对每个输入项分别执行
- 数据访问:
_input.item或_item(Native 模式) - 最适合:项目特定逻辑、独立操作、逐项验证
- 性能:大数据集时较慢(多次执行)
# 示例:为每个项目添加处理时间戳
item = _input.item
return [{
"json": {
**item["json"],
"processed": True,
"processed_at": datetime.now().isoformat()
}
}]
Python 模式:Beta vs Native
n8n 提供两种 Python 执行模式:
Python (Beta) - 推荐
- 使用:
_input、_json、_node辅助语法 - 最适合:大多数 Python 用例
- 可用辅助工具:
_now、_today、_jmespath() - 导入:
from datetime import datetime
# Python (Beta) 示例
items = _input.all()
now = _now # 内置 datetime 对象
return [{
"json": {
"count": len(items),
"timestamp": now.isoformat()
}
}]
Python (Native) (Beta)
- 使用:仅
_items、_item变量 - 无辅助工具:无
_input、_now等 - 更受限:仅标准 Python
- 适用于:需要不带 n8n 辅助工具的纯 Python 时
# Python (Native) 示例
processed = []
for item in _items:
processed.append({
"json": {
"id": item["json"].get("id"),
"processed": True
}
})
return processed
建议:使用 Python (Beta) 以获得更好的 n8n 集成。
数据访问模式
模式 1:_input.all() - 最常用
适用于:处理数组、批量操作、聚合
# 从上一个节点获取所有项目
all_items = _input.all()
# 按需过滤、转换
valid = [item for item in all_items if item["json"].get("status") == "active"]
processed = []
for item in valid:
processed.append({
"json": {
"id": item["json"]["id"],
"name": item["json"]["name"]
}
})
return processed
模式 2:_input.first() - 非常常用
适用于:处理单个对象、API 响应
# 仅获取第一个项目
first_item = _input.first()
data = first_item["json"]
return [{
"json": {
"result": process_data(data),
"processed_at": datetime.now().isoformat()
}
}]
模式 3:_input.item - 仅限逐项模式
适用于:在"对每个项目运行一次"模式中
# 循环中的当前项目(逐项模式)
item = _input.item
data = item["json"]
return [{
"json": {
**data,
"validated": validate(data)
}
}]
兼容工具
Claude CodeCursor
标签
前端开发