2013-07-13 57 views
0

我的號碼時在while循環滯留是:寫入文件

f=file('python3.mp3','wb') 
conn=urllib2.urlopen(stream_url) 
while True: 
    f.write(conn.read(1024)) 

其中stream_url是我保存爲MP3格式的(python3.mp3)磁盤流的URL。

該文件成功保存,但while循環永遠不會終止。我想我對「真」情況代表什麼有點困惑?流是在播放嗎?連接是否打開?我試過在while循環中添加conn.close()和f.close(),但是這會引發錯誤,因爲它似乎中斷了寫入過程。

回答

1

while True永遠循環,或直到你break。你需要break當你讀完整個流,如下所示:

f = file('python3.mp3','wb') 
conn = urllib2.urlopen(stream_url) 
while True: 
    packet = conn.read(1024) 
    if not packet: 
     break # We've read the whole thing 
    f.write(packet) 
+0

太棒了,謝謝 – ChrisArmstrong

0

A while循環運行在它的身體代碼,只要其條件是True。你的狀況永遠是True,所以你的while循環永遠不會結束,這是正確的。除了條件外,while循環不關心任何事情。