技能n8n-code-python
N

n8n-code-python

用n8n代码节点写Python代码。在用n8n编写Python,使用_input/_json/_node语法,使用标准库,或者需要了解n8n代码节点中的Python限制时使用。

n8n-code-python - n8n Python 代码节点完整指南

技能概述

为 n8n 工作流中的 Code 节点提供 Python 代码编写指导,涵盖数据访问模式、标准库使用、常见错误预防以及 Python 与 JavaScript 的选择建议。

适用场景

1. 需要使用 Python 标准库的数据处理

当工作流需要统计分析、正则表达式处理、哈希加密等 Python 标准库功能时,Python Code 节点是理想选择。支持的模块包括 json、datetime、re、base64、hashlib、urllib.parse、math、random 和 statistics。

2. 开发者更熟悉 Python 语法

对于 Python 背景的开发者,使用列表推导式、字典操作等 Python 特性进行数据转换会更加自然高效。适合批量数据过滤、聚合计算、字符串处理等场景。

3. 数据验证和统计分析

需要使用 Python 的 statistics 模块进行平均值、中位数、标准差计算,或进行复杂的数据验证逻辑时,Python Code 节点可以简洁地实现这些需求。

核心功能

1. 数据访问模式指导

详细说明 _input.all()、_input.first() 和 _input.item 三种数据访问方式的使用场景,以及 Webhook 数据通过 _json["body"] 访问的关键注意事项。涵盖 Python (Beta) 和 Python (Native) 两种模式的区别,帮助开发者选择合适的执行模式。

2. 外部库限制与标准库参考

明确说明 n8n Python 环境无法导入 requests、pandas、numpy 等外部库的限制,并提供可用的 Python 标准库完整参考。包含 HTTP 请求、数据分析、网页抓取等常见需求的替代方案。

3. 常见错误预防

列出 Top 5 常见错误及其解决方案:导入外部库、缺失返回语句、错误的返回格式、字典访问 KeyError、Webhook 数据嵌套问题。提供正确的代码模板和最佳实践建议。

常见问题

n8n Code 节点应该选择 Python 还是 JavaScript?

建议 95% 的情况使用 JavaScript。JavaScript 提供完整的 n8n 辅助函数(如 $helpers.httpRequest())、Luxon DateTime 高级日期时间操作、更好的文档支持和社区资源。

仅在以下情况选择 Python:

  • 需要使用 Python 特定的标准库功能(如 statistics 模块)
  • 开发者对 Python 语法更熟悉
  • 逻辑更适合用列表推导式表达

n8n Python 代码节点可以使用哪些库?

只能使用 Python 标准库,无法导入任何第三方库。

可用的标准库模块包括:

  • json(JSON 解析)
  • datetime(日期时间操作)
  • re(正则表达式)
  • base64(编码解码)
  • hashlib(哈希函数)
  • urllib.parse(URL 解析)
  • math(数学函数)
  • random(随机数)
  • statistics(统计分析)

不支持:requests、pandas、numpy、scipy、BeautifulSoup、lxml 等常用第三方库。

n8n 中 _input.all()、_input.first() 和 _input.item 有什么区别?

三种数据访问方式对应不同的使用场景:

  • _input.all():获取所有输入项,适用于批量处理、聚合计算、过滤转换等场景(最常用)
  • _input.first():仅获取第一个输入项,适用于单对象处理、API 响应处理
  • _input.item:仅在"Run Once for Each Item"模式下可用,表示当前循环中的项

选择"Run Once for All Items"模式(默认)时,使用 _input.all() 或 _input.first();选择"Run Once for Each Item"模式时,使用 _input.item。

n8n Python 代码节点的正确返回格式是什么?

必须返回包含 "json" 键的字典列表:

# ✅ 正确格式
return [{"json": {"field1": value1, "field2": value2}}]

# ✅ 多个结果
return [
    {"json": {"id": 1, "data": "first"}},
    {"json": {"id": 2, "data": "second"}}
]

# ❌ 错误:缺少列表包装
return {"json": {"field": value}}

# ❌ 错误:缺少 json 键
return [{"field": value}]

所有代码路径都应返回一致的格式,包括空结果时应返回空列表 []。

n8n Python Beta 模式和 Native 模式有什么区别?

Python (Beta) - 推荐使用:

  • 可使用 _input、_json、_node 辅助语法
  • 提供内置助手:_now、_today、_jmespath()
  • 与 n8n 集成更好

Python (Native) (Beta):

  • 只能使用 _items、_item 变量
  • 没有辅助函数
  • 更接近纯 Python 环境

对于大多数 n8n 工作流,推荐使用 Python (Beta) 模式以获得更好的集成体验。