Возможно, вам лучше сохранить файлоподобный объект из urllib2.urlopen()
, а затем использовать его метод read
в цикле с параметром размера:
#!/usr/bin/python
import urllib2
f=file('python.mp3', 'w')
url=urllib2.urlopen("http://mp3.streampower.be/radio1-high.mp3")
while True:
f.write(url.read(1024))
Ваш код вызывал read
без параметра размера - который пытается прочитать все это. Это поток, так что это будет какое-то время. Если поток когда-либо закроется, , тогда ваш вызов на write
может продолжиться, и вы мгновенно перейдете из файла в огромный файл.
Мой пример кода создаст вам хороший и медленный mp3-файл. Возможно, вам придется настроить 1024
, если потоки отправляют намного быстрее, чем обычные битрейты mp3, но это должно быть хорошо. (Поток 128 Кбит / с потребует 16 системных вызовов в секунду до write(2)
, что не должно вызывать стресса. Но при скорости 10 Мбит или выше это будет больно, и вам следует использовать больший размер read
.)