Adobe Air2 NativeProcess API con Javascript

Estoy intentando lanzar una secuencia de comandos de python con la API NativeProcess de Javascript. En la referencia de la API de Adobe AIR para desarrolladores de HTML , encontré un buen ejemplo para esa tarea, pero no funciona. Busqué un montón de otros ejemplos, pero todavía no puedo encontrar la respuesta.

Aquí está el código de ejemplo para el archivo html:

  Test   var process; function launchProcess() { if(air.NativeProcess.isSupported) { air.trace("NativeProcess supported."); setupAndLaunch(); } else { air.trace("NativeProcess not supported."); } } function setupAndLaunch() { var nativeProcessStartupInfo = new air.NativeProcessStartupInfo(); var file = air.File.applicationDirectory.resolvePath("test.py"); nativeProcessStartupInfo.executable = file; var processArgs = new air.Vector[""](); processArgs.push("foo"); nativeProcessStartupInfo.arguments = processArgs; process = new air.NativeProcess(); process.start(nativeProcessStartupInfo); process.addEventListener(air.ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData); process.addEventListener(air.ProgressEvent.STANDARD_ERROR_DATA, onErrorData); process.addEventListener(air.NativeProcessExitEvent.EXIT, onExit); process.addEventListener(air.IOErrorEvent.STANDARD_OUTPUT_IO_ERROR, onIOError); process.addEventListener(air.IOErrorEvent.STANDARD_ERROR_IO_ERROR, onIOError); } function onOutputData() { air.trace("Got: ", process.standardOutput.readUTFBytes(process.standardOutput.bytesAvailable)); } function onErrorData(event) { air.trace("ERROR -", process.standardError.readUTFBytes(process.standardError.bytesAvailable)); } function onExit(event) { air.trace("Process exited with ", event.exitCode); } function onIOError(event) { air.trace(event.toString()); }      

Y aquí el código para el archivo python (no funciona):

 #! /usr/bin/env python2.5 # -*- coding: utf-8 -*- import sys for word in sys.argv: #echo the command line arguments print word print "HI FROM PYTHON" print "Enter user name" line = sys.stdin.readline() sys.stdout.write("hello," + line) 

Ejecutar la aplicación Air con el comando adl main.xml muestra en mi terminal (yo uso OSX) solo “NativeProcess support”.

Gracias por la ayuda.

Y aquí están los cambios que hice en el archivo python para que funcione:

 #! /usr/bin/env python2.5 # -*- coding: utf-8 -*- import sys import os def convert(args): path = os.path.expanduser('~') + "/Desktop/" myFile = open(path+args, 'w') myFile.write('Hello World\n') myFile.close() sys.stdout.write("Python Done") if __name__ == "__main__": convert(sys.argv[1]) 

Gracias a pyfunc …

Si ejecuta su progtwig, a continuación se muestra la salida:

 test.py HI FROM PYTHON Enter user name 

Eso es este fragmento de código de Python que está buscando una entrada estándar y está escribiendo en una salida estándar. No creo que sea posible si no lo ejecutas desde el shell.

¿Qué hay de eliminar:

 line = sys.stdin.readline() sys.stdout.write("hello," + line) 

y hacer algunas expresiones de python inocuas como

 a = 1+4 

Y a ver, si eso funciona. Tengo el presentimiento de que esto podría ser un problema.