簡體   English   中英

為什么Python3.1中的代碼行為與Python2.6中的行為不同?

[英]Why does this code behave differently in Python3.1 than in Python2.6?

我對編程很陌生,所以如果我的問題太傻,我會事先道歉。

#!/usr/bin/python2.6  
import subprocess, time  
p=subprocess.Popen(['cat'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)  
for i in 'abcd':  
    p.stdin.write(str.encode(i+'\n'))  
    output=p.stdout.readline()  
    print(output)  
    time.sleep(1)

在Python 2.6中執行此代碼會打印字母a,b,c,d,每行輸出一秒鍾后出現。 這是預期的行為。 但是在Python 3.1中,在line output=p.stdout.readline()處阻止了執行。 如何為Python 3.1更正此問題?

似乎是緩沖的差異。 添加p.stdin.flush()調用解決了這個問題。 (見上面的評論)。

社區維基因為這個答案我沒有得到任何學分,但有些答案需要被標記為已被接受。

[@Geo Pop:請“接受”這個問題,因為它顯然是正確的。]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM