首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从网站运行python脚本

从网站运行python脚本
EN

Stack Overflow用户
提问于 2016-01-28 10:13:32
回答 1查看 4.2K关注 0票数 0

我只是需要一点指导,以便更多地阅读关于以下问题的内容:

我有几个python脚本在我的网络驱动器上的一个文件夹中,我每天运行,我想创建一个网站,在那里我以列表的形式显示那些脚本,当我点击它们时,我希望它们能够运行。

有办法用AngularJs解决这个问题吗?

谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-28 11:07:27

好的,我有一个小的节点服务器,我为了你的目的做了一些改动,我知道这不是一个理想的服务器,但是这个应该可以完成这个工作。post请求上的响应应该取决于是否只想触发python脚本,或者您也想要它的输出。

从前端发送包含python脚本或其他内容的路径的post请求,并自己更改post情况。

使用一个角循环来读取列表,它可以是从目录中的静态文件夹中提供的json

这个服务器无论如何都不是安全的,很可能会在短时间内被破解,但是对于本地场景,它可以达到这个目的。

另外,如果您不想使用这一点,那么请记住,您可以将列表从端点服务器到页面,并使用ng-repeat填充HTML,然后发送带有脚本相对路径或后端脚本名称和处理路径的post请求,这将是最重要的。抱歉,不能贴任何正面的东西。

代码语言:javascript
复制
var http = require('http');
var fs = require('fs');
var url = require('url');
var colors = require('colors');
var exec = require('child_process').exec;

var staticReg = /^\/static\/\w+\.\w+$/;;
var server = http.createServer(function(request, response){
    var url_parts = url.parse(request.url)
    if (request.method=="GET"){
        process.stdout.write("GET :: ".green + url_parts.path.yellow)
        if(staticReg.test(url_parts.path)){
            if (fs.existsSync("."+url_parts.path)){
                response.writeHead(200)
                response.write(fs.readFileSync("."+url_parts.path))
                response.end()
                process.stdout.write(" :: 200\n".green)
            }
            else{
                response.writeHead(404)
                response.end()
                process.stdout.write(" :: 404\n".red)
            }
            return
        }

        switch (url_parts.path){
            case "/":
                    process.stdout.write(" :: 200\n".green)
                    var home = fs.readFileSync("./index.html")
                    response.writeHead(200);
                    response.write(home);
                    response.end();
                    break;
            default :
                    process.stdout.write(" :: 404\n".red)
                    response.writeHead(404);
                    response.write("404 not found")
                    response.end();
                    break;
        }
    }

    if (request.method=="POST"){
        process.stdout.write("POST :: ".green + url_parts.path.yellow)
        var body = '';
        request.on('data',function(data){
            body+=data;
        });
        request.on('end', function(){
            switch(url_parts.path){
                case "/fire/":
                        body=JSON.parse(body)
                        process.stdout.write(" :: 200\n".green)
                        command='python '+body["script_path"]
                        exec(command,function callback(error, stdout, stderr){
                            // Do error checking here and send response.
                        })
                        // Or send response here.
                        response.writeHead(200);
                        response.write("Command fired.")
                        response.end();
                        break;
            }
        })
    }
})

server.listen(8002);
console.log("Listening to "+"localhost".blue+" on port "+ "8002".green);
server.on('error',function(err){
    console.log('Error happened: '+err.toString());
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35058530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档