14

Lets say that I have this code inside a JavaScript file:

var x = 10;
x = 10 - 5;
console.log(x);
function greet() {
  console.log("Hello World!");
}
greet()

How would I use Python to execute this code and "print" x and Hello World!?
Here is some pseudo code that further explains what I'm thinking:

# 1. open the script
script = open("/path/to/js/files.js", "r")
# 2. get the script content
script_content = script.read()
# 3. close the script file
script.close()
# 4. execute the script content and "print" "x" and "Hello World!"
x = js.exec(script_content)

And, the expected result would look like this:

>>> 5
>>> "Hello World!"
2
  • This may help: pypi.python.org/pypi/PyExecJS Commented Jul 27, 2016 at 20:17
  • @FailedUnitTest Thank you for the link. Also can the down-voter explain why & how this is too broad? Commented Jul 27, 2016 at 20:21

1 Answer 1

22

The module Naked does exactly this. pip install Naked (or install from source if you prefer) and import the library shell functions as follows:

from Naked.toolshed.shell import execute_js, muterun_js

response = muterun_js('file.js')
if response.exitcode == 0:
  print(response.stdout)
else:
  sys.stderr.write(response.stderr)

For your particular case, with file.js as

var x = 10;
x = 10 - 5;
console.log(x);
function greet() {
      console.log("Hello World!");
}
greet()

the output is '5\nHello World!\n', which you can parse as desired.

Sign up to request clarification or add additional context in comments.

Thank you for the answer and help, appreciate it.
@Mango glad I could help :)

Your Answer

Draft saved
Draft discarded

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.