["python","image","download","urllib"]
python save image from url

I got a problem when I am using python to save an image from url either by urllib2 request or urllib.urlretrieve. That is the url of the image is valid. I could download it manually using the explorer. However, when I use python to download the image, the file cannot be opened. I use Mac OS preview to view the image. Thank you! UPDATE: The code is as follow def downloadImage(self): request = urllib2.Request(self.url) pic = urllib2.urlopen(request) print "downloading: " + self.url print self.fileName filePath = localSaveRoot + self.catalog + self.fileName + Picture.postfix # urllib.urlretrieve(self.url, filePath) with open(filePath, 'wb') as localFile: localFile.write(pic.read()) The image URL that I want to download is http://site.meishij.net/r/58/25/3568808/a3568808_142682562777944.jpg This URL is valid and I can save it through the browser but the python code would download a file that cannot be opened. The Preview says "It may be damaged or use a file format that Preview doesn't recognize." I compare the image that I download by Python and the one that I download manually through the browser. The size of the former one is several byte smaller. So it seems that the file is uncompleted, but I don't know why python cannot completely download it.
A sample code that works for me on Windows: import requests with open('pic1.jpg', 'wb') as handle: response = requests.get(pic_url, stream=True) if not response.ok: print(response) for block in response.iter_content(1024): if not block: break handle.write(block)