Spidermonkey中的文件I/O

2 投票
2 回答
1994 浏览
提问于 2025-04-15 12:32

多亏了 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_evaluatescript

import 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);')

撰写回答