2015-06-20 48 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) –