我的代码是:
f=file('python3.mp3','wb')
conn=urllib2.urlopen(stream_url)
while True:
f.write(conn.read(1024))
其中stream_url是我以mp3格式保存到磁盘的流的网址(python3.mp3)。
文件成功保存,但while循环永远不会终止。我想我对“真实”条件代表什么感到困惑?是在流播放的时候吗?连接是否打开?我尝试在while循环中添加conn.close()和f.close(),但这会引发错误,因为它似乎正在中断写入过程。
答案 0 :(得分: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)
答案 1 :(得分:0)
只要条件为while
,True
循环就会在其正文中运行代码。您的条件始终为True
,因此您的while
循环永远不会结束,这是正确的。除了条件之外,while
循环并不关心任何事情。