Message": "Command failed: cd /data/pubmed-search/NO_DELETE && python filter_iss...
🚨 错误信息
{
"errorMessage": "Command failed: cd /data/pubmed-search/NO_DELETE && python filter_issn_to_pubmed_query.py \"/data/pubmed-search/retrieved_issns(20250913_163609)_information.csv\"--cas-zones \"1\" \"2\" \"3\" --if-min 3.0 \nusage: filter_issn_to_pubmed_query.py [-h]\n [--cas-zones CAS_ZONES [CAS_ZONES ...]]\n [--jcr-zones JCR_ZONES [JCR_ZONES ...]]\n [--if-min IF_MIN] [--if-max IF_MAX]\n [--output-md OUTPUT_MD]\n input_csv\nfilter_issn_to_pubmed_query.py: error: unrecognized arguments: 1 2 3 \n",
"errorDetails": {},
"n8nDetails": {
"nodeName": "生成information.md",
"nodeType": "n8n-nodes-base.executeCommand",
"nodeVersion": 1,
"itemIndex": 0,
"time": "2025/9/14 00:43:50",
"n8nVersion": "1.107.4 (Self Hosted)",
"binaryDataMode": "default",
"stackTrace": [
"NodeOperationError: Command failed: cd /data/pubmed-search/NO_DELETE && python filter_issn_to_pubmed_query.py \"/data/pubmed-search/retrieved_issns(20250913_163609)_information.csv\"--cas-zones \"1\" \"2\" \"3\" --if-min 3.0 ",
"usage: filter_issn_to_pubmed_query.py [-h]",
" [--cas-zones CAS_ZONES [CAS_ZONES ...]]",
" [--jcr-zones JCR_ZONES [JCR_ZONES ...]]",
" [--if-min IF_MIN] [--if-max IF_MAX]",
" [--output-md OUTPUT_MD]",
" input_csv",
"filter_issn_to_pubmed_query.py: error: unrecognized arguments: 1 2 3 ",
"",
" at ExecuteContext.execute (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/n8n-nodes-base@file+packages+nodes-base_@aws-sdk+credential-providers@3.808.0_asn1.js@5_1af219c3f47f2a1223ec4ccec249a974/node_modules/n8n-nodes-base/nodes/ExecuteCommand/ExecuteCommand.node.ts:102:12)",
" at WorkflowExecute.runNode (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/n8n-core@file+packages+core_@opentelemetry+api@1.9.0_@opentelemetry+sdk-trace-base@1.30_0c275070fd0434c00ffd62213b2bcae4/node_modules/n8n-core/src/execution-engine/workflow-execute.ts:1212:9)",
" at /usr/local/lib/node_modules/n8n/node_modules/.pnpm/n8n-core@file+packages+core_@opentelemetry+api@1.9.0_@opentelemetry+sdk-trace-base@1.30_0c275070fd0434c00ffd62213b2bcae4/node_modules/n8n-core/src/execution-engine/workflow-execute.ts:1582:27",
" at /usr/local/lib/node_modules/n8n/node_modules/.pnpm/n8n-core@file+packages+core_@opentelemetry+api@1.9.0_@opentelemetry+sdk-trace-base@1.30_0c275070fd0434c00ffd62213b2bcae4/node_modules/n8n-core/src/execution-engine/workflow-execute.ts:2158:11"
]
}
}
🤖 AI解决方案
filter_issn_to_pubmed_query.py: error: unrecognized arguments: 1 2 3
filter_issn_to_pubmed_query.py: error: unrecognized arguments: 1 2 3
原因分析
--cas-zones 参数期望接收以空格分隔的单个值列表,但你传递了 "1" "2" "3",这被解释为多个独立的未识别参数。
解决方案
将--cas-zones 参数的值合并成一个以空格分隔的字符串,或者使用列表形式传递。根据 usage 显示,--cas-zones 接收 CAS_ZONES [CAS_ZONES ...],意味着它可以接收一个或多个值。正确的写法是将所有值放在一个引号内,或者根据你脚本的具体解析逻辑进行调整。
修改命令为:
cd /data/pubmed-search/NO_DELETE && python filter_issn_to_pubmed_query.py "/data/pubmed-search/retrieved_issns(20250913_163609)_information.csv" --cas-zones "1 2 3" --if-min 3.0
或者,如果你的 filter_issn_to_pubmed_query.py 脚本是使用 argparse 且 nargs='+',那么直接传递多个参数也是可以的,但需要确保 n8n 正确处理了空格:
cd /data/pubmed-search/NO_DELETE && python filter_issn_to_pubmed_query.py "/data/pubmed-search/retrieved_issns(20250913_163609)_information.csv" --cas-zones 1 2 3 --if-min 3.0请检查你的
filter_issn_to_pubmed_query.py 脚本如何定义 --cas-zones 参数,并选择最适合的命令。通常,第一种将所有值包裹在单个引号内传递给参数的方式更安全。
预防措施
- 命令行参数测试:在
n8n中执行前,先在终端手动执行一次命令,确保参数解析正确。 - 脚本参数定义检查:仔细阅读
filter_issn_to_pubmed_query.py脚本中argparse或其他参数解析库对--cas-zones的定义,理解其期望的输入格式。