2015-06-20 47 views
0

Python新手在这里。如何使用管道编写Python exe程序?

  1. 我创建Python程序,msg.py,其输出的消息(你好,世界)。

  2. 我创建了一个Python程序id.py,它读取输入并输出它。

  3. 使用py2exe我创造了他们每个人的可执行文件:msg.exeid.exe

  4. 我创建了一个DOS批处理文件,设置PATHmsg.exedist文件夹和id.exedist文件夹。

  5. 然后我已将此添加到DOS批处理文件:

    味精| ID

当我运行该批处理文件,我得到这个错误信息:

Traceback (most recent call last): 
    File "id.py", line 4, in <module> 
IndexError: list index out of range 

我推测,管道符号是不吃奶的msg.exe输出到id.exe输入。那是对的吗?

  • 于是我放在这个批处理文件:

    ID < MSG

  • 当我跑的批处理文件我得到这个错误消息:

    Access is denied. 
    

    我真的很想步5工作。也就是说,我真的希望能够撰写使用管道符号的程序,就像这样:

    A | B | C | ... 
    

    理想ABC ...可以编写的可执行文件在不同的语言,如PythonC

    我该如何得到这个工作?

    以下是我所做的细节。我在Windows 7上运行。

    这里是msg.py

    import stdio 
    
    stdio.writeln('Hello, World') 
    

    这里是id.py

    这里是我的DOS批处理文件:

    @echo OFF 
    
    set PATH=%PATH%;msg/dist;id/dist 
    
    msg | id 
    
    +1

    你的猜测是错误的。回溯告诉你,'sys.argv [1]'有错误。当你使用py2exe并以这种方式调用时,只有'sys.argv [0]'。 –

    回答

    3

    sys.argv是命令行参数(id.py ABC) 。

    要从管道读取数据,需要在id.py中使用sys.stdin.read()

    编辑:另见:https://stackoverflow.com/a/7608205/478656

    +0

    非常感谢!现在它的作品 - 耶!我在路上! (显然,“msg”是DOS命令的名称,所以我必须从msg.py更改为mesg.py) –