Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带Javascript的Adobe Air2 NativeProcess API_Javascript_Python_Air - Fatal编程技术网

带Javascript的Adobe Air2 NativeProcess API

带Javascript的Adobe Air2 NativeProcess API,javascript,python,air,Javascript,Python,Air,我正在尝试从Javascript启动一个带有NativeProcess API的python脚本。 在这方面,我为这项任务找到了一个很好的例子,但它不起作用。我查了很多其他的例子,但仍然找不到答案 以下是html文件的示例代码: <html> <head> <title>Test</title> <script type="text/javascript" src="AIRAliases.js"></script

我正在尝试从Javascript启动一个带有NativeProcess API的python脚本。 在这方面,我为这项任务找到了一个很好的例子,但它不起作用。我查了很多其他的例子,但仍然找不到答案

以下是html文件的示例代码:

<html>
   <head>
   <title>Test</title>
   <script type="text/javascript" src="AIRAliases.js"></script>
   <script type="text/javascript"> 

        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["<String>"]();
            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());
        }

   </script>
   </head>

   <body onload="launchProcess()">
   </body>
</html>
使用命令
adl main.xml
运行Air应用程序在我的终端(我使用OSX)中仅显示“支持NativeProcess”

谢谢你的帮助

下面是我为使python文件正常工作而对其所做的更改:

#! /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])

多亏了pyfunc…

如果您运行程序,那么以下是输出:

test.py
HI FROM PYTHON
Enter user name
这段python代码正在寻找标准输入并写入标准输出。 我不认为这是可能的,如果你不运行从壳牌

如何删除:

line = sys.stdin.readline()
sys.stdout.write("hello," + line)
做一些无害的python表达式,比如

a = 1+4 

看看这是否有效。我有预感这可能是个问题。

谢谢你的帮助。更改python代码效果很好。关于我最后做了什么的细节,请看上面编辑的问题。
a = 1+4