Spidermonkey中的文件I/O
多亏了 python-spidermonkey
,在Python中使用JavaScript代码变得非常简单。
不过,除了用Python去读取一个文件里的JS代码,然后把这个字符串传给Spidermonkey,还有没有办法直接在Spidermonkey里面读取这个文件(或者像Rhino那样把文件路径当作参数传进去)呢?
2 个回答
2
SpiderMonkey作为一个库,可以通过调用JS_EvaluateScript
,并传入一个不为空的filename
参数来实现这个功能。
不过,python-spidermonkey的接口代码只在eval_script
这个方法里调用JS_EvaluateScript
,而这个方法的实现只接受字符串作为输入。
如果你有问题,建议你去找python-spidermonkey的开发者,或者——如果可以的话,更好!——提供一个补丁,增加一个比如eval_file_script
的方法 :)
2
原来你可以直接把一个Python函数绑定到Spidermonkey里,然后在里面使用它:
http://davisp.lighthouseapp.com/projects/26898/tickets/23-support-for-file-io-js_evaluatescriptimport spidermonkey
def loadfile(fname):
return open(fname).read()
rt = spidermonkey.Runtime()
cx = rt.new_context()
cx.add_global("loadfile", loadfile)
ret = cx.execute('var contents = loadfile("foo.js"); eval(contents);')