Articles of python

使用相对URL从NodeJS / Express实例执行Python脚本

我正在开发一个依赖NodeJS和Express模块​​的Web应用程序,在这个模块中,我试图从一个快速路线运行一个Python脚本。 我想要做的是将Python脚本存储在/public/scripts/test.py并使用诸如/scripts/test.py的相对URL来引用它,以便Node不需要知道任何关于环境的信息它正在运行。 我试图通过使用python-shell模块和简单地使用Node内置的ChildProcess来执行Python脚本。 在这两种情况下,我遇到了同样的问题 – Python脚本的path似乎被视为绝对的,因此脚本不执行,导致文件未find错误。 我该如何去调用一个相对URL的Python脚本? 我对networking开发相当陌生,如果我只是误解了这个情况,我不会感到惊讶。 编辑:正如jfreind00指出的,process.cwd()可以用来标识当前的工作目录上的脚本可以build立一个URL的顶部。 像魅力一样工作。

npm安装grunt-takana在node-gyp重build失败

我试图安装grunt-takana但它是Windows的先决条件之一, node-gyp似乎很成问题。 在cmd ,当我尝试npm install grunt-takana在node-gyp rebuild npm install grunt-takana node-gyp rebuild后出现以下错误: nodefsevents.cc .. \ nodefsevents.cc(11):致命错误C1083:无法打开包含文件:'pthread.h':没有这样的文件或目录(…) 最后还有一个: 二进制是好的; 退出 npm ERR! fsevents@0.1.6安装: node-gyp rebuild gyp node-gyp rebuild npm ERR! 退出状态1 npm ERR! npm ERR! 在fsevents@0.1.6安装脚本失败。 当我尝试在c:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp手动执行node-gyp rebuild ,我收到了一些更具体的错误: gyp:binding.gyp not found(cwd:c:\ Program Files \ nodejs \ node_modules \ npm \ node_m odules \ node-gyp)尝试加载binding.gyp […]

为什么我的程序退出,并没有永远运行

我有一个websocket客户端代码复制..它的工作原理,除了它打印后打印你好1..Hello 2和你好3,然后退出。 我会认为run_forever意味着它将永远运行,那为什么它会退出? 如何让程序继续等待websocket消息? import thread import pdb import websocket import time import requests def on_message(ws, message): print message def on_error(ws, error): print error def on_close(ws): print "### closed ###" def on_open(ws): def run(*args): for i in range(3): time.sleep(1) ws.send("Hello %d" % i) time.sleep(1) ws.close() print "thread terminating…" thread.start_new_thread(run, ()) if __name__ == "__main__": URL […]

Bidrectional节点/ python通信

我正试图在节点和派生的Python进程之间实现简单的双向通信。 python: import sys for l in sys.stdin: print "got: %s" % l 节点: var spawn = require('child_process').spawn; var child = spawn('python', ['-u', 'ipc.py']); child.stdout.on('data', function(data){console.log("stdout: " + data)}); var i = 0; setInterval(function(){ console.log(i); child.stdin.write("i = " + i++ + "\n"); }, 1000); 在Python上使用-u强制unbuffered I / O,所以我期望看到输出(我也尝试了sys.stdout.flush() ),但没有。 我知道我可以使用child.stdout.end()但是这阻止了我以后写数据。

使用用户提供的脚本parsing文本文件的安全方法

我正在寻找一种方法来parsing用户提供的URL的文本,用户也提供了parsing器脚本。 eval很容易,但显然超级可怕。 最终目标是只允许用户指向我的服务器的数据源,并告诉我的服务器如何读取数据。 什么是最安全的方法来做到这一点? python或节点首选,但我不限于任何特定的语言。 所以例如。 这是一个cvs文件,但有时我只会有一个文本文件。 url: http : //www.ams.usda.gov/mnreports/lm_xb803.txt 这个python脚本可以从url读取文件,并存储在数据库中: expected_length = 6 requiredFeilds = ['low','high'] requiredNonZero = ['low','high'] response = urllib2.urlopen(url) reader = csv.reader(response) grade = None date = None first_row = True keep_list = [] for row in reader: if len(row) != expected_length: continue if first_row: date_text = row[2] date_object = […]

我怎么都洗牌,并把一个大列表分成小的列表,试图最大限度地提高速度?

我有一个大约100M +元素(当前sorting),我想随机(洗牌)和块/拆分成较小的列表(大约50K桶)列表。 在最大化速度方面做什么是最好的方法? 我打开任何库或语言(目前使用节点和Python的项目),如果他们有快速的预build方法。 谢谢! PS这不仅仅是一个理论性的练习,我试图找出我的实习,因为我们将使用大约50K的数字海洋节点并行运行另一个脚本,将较小的列表作为input。

如何让节点的Web客户端与Heroku上的REST API交谈?

我有一个称为bidsell的节点networking客户端,以及一个名为quote的小型Python Tornado REST API。 Bidsell在触发时会定期通过http获取报价。 引用作为json,随机返回价格信息。 在本地工作 – 想在线分享,但是如何? Heroku看起来很有希望 已经尝试在heroku上的同一个项目中同时部署bidsell和报价,每个项目都在自己的heroku web dyno或部署容器中运行。 从日志“heroku日志”都安装正确,但只有一个似乎正在运行。 因此,我可以访问Bidsell的首页url,但是,当bidsell被触发去获取报价信息报价服务没有find:-(我应该使用另一种部署模式?

NPM不处理节点js上的更新

我在安装一个新的gulp项目时遇到了一些问题,所以我从节点0.12更新了我的节点,现在我面临着多个错误,而且过去两天没有任何工作。 我的节点版本是 C:\projects\newitpeople>node –version v5.1.0 我的npm版本是 C:\projects\newitpeople>npm –version 3.3.12 当我运行gulp服务时,我得到错误 C:\projects\newitpeople>gulp serve module.js:340 throw err; ^ Error: Cannot find module './BufferUtil.fallback' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (module.js:289:25) at Module.require (module.js:366:17) at require (module.js:385:17) at Object.<anonymous> (C:\projects\newitpeople\node_modules\socket.io\node_modules\engine.io\node_modules\ws\lib\BufferUtil.js:12:20) at Module._compile (module.js:425:26) at Object.Module._extensions..js (module.js:432:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:313:12) at Module.require (module.js:366:17) 我正在使用这个链接 运行npm install bufferutil时出现此错误 […]

快递节点与python的通信

我有一个快递节点应用程序,它包含一个接受用户数据的表单,馈入到mongodb中,然后运行一个pythonalgorithm,它有用户数据作为参数并返回数据到应用程序。问题是python代码没有运行,任何东西。 我正在使用child_process来运行Python代码。 请帮忙 var express = require('express'); var ws = express(); var bodyParser = require('body-parser'); var databaseUrl = "localhost:27017/ws"; var collections = ["Users"]; var mongojs = require('mongojs'); var db = mongojs(databaseUrl,collections); var spawn = require('child_process').spawn; ws.set('view engine','ejs'); ws.use(bodyParser.urlencoded({extended : false})); ws.get('/',function(req,res){ res.render('default'); }); ws.use(express.static(__dirname + '/public')); ws.get('/*',function(req,res){ res.send("no where to go..") }); ws.post('/login',function(req,res){ var user_login=req.body.login; […]

python,如何在远程主机上运行命令并在GUI中实时显示输出?

我知道这是一个真正的开放式问题,但我是新来的python,并build立一个简单的一个Web应用程序给非技术团队一些自我服务的能力。 这个团队有一堆重复的任务,他们踢到另一个团队,只是乞求自动化,如在远程主机上重新启动几个进程,grep日志,清理旧文件,部署/重新启动新版本的应用程序,获取当前运行版本等等。用户将点击button并观看GUI中的输出,他们不会手动input命令来运行(我知道这是危险的)。 任何新的任务将被编写并从技术支持团队添加到应用程序。 现在,我唯一不确定的是如何从命令中获得(接近)实时输出回GUI。 在过去我已经在PHP中构build了一个类似的应用程序,我所做的是将远程命令的输出刷新到db,然后用ajax轮询db并追加新的输出。 这是非常简单,工作很好,即使输出将回来大块(我有输出写入GUI线,所以它看起来像是实时)。 有一个更好的方法吗? 我正在考虑使用networking套接字将命令的输出返回到GUI。 好主意? 馊主意? 任何更好的Python库? 我也可以使用nodejs,如果这有什么区别的话,但我对这两种语言都是新手(我已经有一个简单的python烧瓶应用程序运行,作为一个API来粘合一些业务应用程序,而不是一个大问题重新写入节点)。