2016-06-12 3 views
-1

Ich bin derzeit mitPython: Bei einem Link, wie lokal gespeichert wird, wenn der Link ein Bild ist und nicht speichern, wenn es kein Bild ist?

import urllib 

urllib.urlretrieve("http://www.digimouth.com/news/media/2011/09/google-logo.jpg", "local-filename.jpg") 

Gibt es eine Möglichkeit, um zu sehen, ob der Link ein Bild enthält oder nicht, wenn nicht, dann nicht notwendig, herunterladen, wenn ja, dann herunterladen.

Danke!

+0

Was meinen Sie mit * wenn der Link ein Bild enthält oder nicht *? –

+0

Sie müssen die Dateierweiterung analysieren. – Serenity

Antwort

1

Die Verlängerung bedeutet nicht, eine Datei ist ein tatsächliches Bild, wenn Sie, dass die Datei überprüfen wollen, ist in der Tat ein Bild, das Sie imagemagik identify verwenden:

from subprocess import check_output, CalledProcessError 
from tempfile import NamedTemporaryFile 
import requests 
from shutil import move 

r = requests.get("http://www.digimouth.com/news/media/2011/09/google-logo.jpg").content 
tmp = NamedTemporaryFile("wb", delete=False, dir=".") 
tmp.write(r) 


try:  
    out = check_output(["identify", "-format", "%m", tmp.name]) 
    print(out) 
    move(tmp.name, "whatever.{}".format(out.lower())) 
except CalledProcessError: 
    tmp.delete = True 

Um all das Format identify -list format unterstützt Lauf.

Verwandte Themen