node.js - node调用python3子进程失败
高洛峰
高洛峰 2017-04-17 11:41:00
[Node.js讨论组]
var fs = require('fs'),
    stdin = process.stdin,
    stdout = process.stdout,
    spawn = require("child_process").spawn;
var path= require('path');
//限制访问路径,及权限
var userdir= '/Users/FusGoethe/Desktop';
//process.cwd() 返回当前文件夹路经
var args = process.argv.slice(2),
    filePath = args[0],
    pyPath =path.join(userdir,args[1]);

var pathname = path.join(userdir,filePath);
var datas = [],
    accounts = 0,
    lock = true;




/**
 * 读取文件
 * @param dir        目标文件夹路径
 * @param callback
 */
function readFiles(dir,callback){


    fs.readdir(dir,function(err,files){

        if(!files){
            stdout.write('your path is wrong\n');
            return;
        }

        accounts = files.length;

        files.forEach(function(file){


            if(file.indexOf('.') === -1 || file[0] == '.'){
                accounts--;
                return;
            }

            console.log(file);

            //得到文件路径
            var pathname = path.join(dir,file);

            fs.readFile(pathname,'utf-8', function (err, data) {
                if (err) throw err;

                console.log(1);

                callback(data);
            });

        });

    });

    stdout.write('Please wait...\n');
}


function startChild(data){



    datas.push(data);

    if(!(--accounts) && lock ){
        lock = false;

        datas.join("#NODEJS#");

       var child = spawn('python3',[pyPath,datas]);

        console.log(2);

        child.stdout.setEncoding('utf-8');

        child.stdout.on("data",function(data){
            console.log(data);
        }).on("end",function(){
            console.log("stdoutOver");
        });

        child.on("err",function(err){
            console.log(err);
        }).on("exit",function(){
            console.log("\n\nover!");
        });

    }
}


readFiles(pathname,startChild);

以上为js代码


import sys data = sys.argv[1] string=data.split("#NODEJS#").join("#PYTHON3#"); print(string) fh = open('./dat/ex.dat','w',encoding='utf-8') fh.write(string)

以上是py代码

$ node ex.js ./work/py ./work/py/nodepy.py
Please wait...
exforfoundmantal.py
generate_usernames.py
kk.html
nodepy.py
statistics.py
1
1
1
1
1
2
stdoutOver


over!

以上为输出

文件也没有任何变化

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
怪我咯

抱歉,已解决,是我将python3和js的语法搞混了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号