NodeJS通过命令行调用Python脚本时传递不定数量参数的方法
动态传参实现方法
child_process.execFile() 的第二个参数本身就支持接收任意长度的参数数组,不需要提前固定参数个数,直接通过数组展开语法把动态参数拼入参数列表即可。
实现代码
const { execFile } = require('node:child_process'); // 业务中拿到的动态长度参数数组,元素个数可随业务场景变化 const dynamicParams = [/* 任意数量的待传参数,顺序和Python脚本接收顺序保持一致即可 */]; // 构造执行参数:首元素固定为Python脚本路径,后续拼接所有动态参数 const execArgList = [ `${conf.default.python_dir}/script.py`, ...dynamicParams ]; const child = execFile('python', execArgList, (error, stdout, stderr) => { if (error) { throw error; } console.log(stdout); });
注意事项
- 不要手动把所有参数拼接成单个命令字符串传给
exec,execFile会自动处理参数内的空格、特殊字符转义,天然规避命令注入风险,传参逻辑和你之前固定写死arg1,arg2,arg3,arg4的效果完全一致 - Python端通过
sys.argv读取到的参数顺序,和你传入execArgList的动态参数顺序完全对应 - 如果动态参数中包含数字、布尔值等非字符串类型,提前手动转为字符串再放入参数数组,避免隐式类型转换导致的参数值异常
- 该方案不需要对Python脚本做任何修改,完全适配你无脚本修改权限、仅能通过命令行传参交互的限制
内容的提问来源于stack exchange,提问作者PoePew
相关产品推荐
相关产品推荐

