Еще один, с помощью urlretrieve
:
import urllib
urllib.urlretrieve ("http://www.example.com/songs/mp3.mp3", "mp3.mp3")
(для Python 3 + использование import urllib.request
и urllib.request.urlretrieve
)
еще одно, с "progressbar"
import urllib2
url = "http://download.thinkbroadband.com/10MB.zip"
file_name = url.split('/')[-1]
u = urllib2.urlopen(url)
f = open(file_name, 'wb')
meta = u.info()
file_size = int(meta.getheaders("Content-Length")[0])
print "Downloading: %s Bytes: %s" % (file_name, file_size)
file_size_dl = 0
block_sz = 8192
while True:
buffer = u.read(block_sz)
if not buffer:
break
file_size_dl += len(buffer)
f.write(buffer)
status = r"%10d [%3.2f%%]" % (file_size_dl, file_size_dl * 100. / file_size)
status = status + chr(8)*(len(status)+1)
print status,
f.close()
Реализуйте IDisposable, если у вас есть класс, который обертывает неуправляемый ресурс, или когда в вашем классе есть поле, реализующее IDisposable.
Каждый раз, когда вы выделяете ресурсы, которые должны быть освобождены, такие как файлы, дескрипторы и т. Д. Например, если вы используете ресурсы Win32 (которые не реализуют IDisposable), вы должны реализовать IDisposable, чтобы освободить их .
Когда вам нужно освободить неуправляемых ресурсов, реализуйте IDisposable
.
From MSDN: http://msdn.microsoft.com/en-us/library/system.idisposable.aspx
Use the Dispose method of this interface to explicitly release unmanaged resources in conjunction with the garbage collector. The consumer of an object can call this method when the object is no longer needed.
Обычно я использую IDisposable каждый раз, когда мне нужно выполнить очистку элементов. Для меня это происходит при написании кода, который абстрагирует базу данных / сеть / файловые системы.
Он просто отмечает элементы, готовые для сборщика мусора, вместо того, чтобы ждать, пока он попытается сделать это самостоятельно.