2016-05-03 8 views
0

nicht downloaden Ich versuche, Bilder mit Python herunterzuladen, und ich fand einige gute Antworten in Downloading a picture via urllib and python, aber wenn ich versuche, easygui zu verwenden, um eine URL einzugeben, öffnet sich das Bild gerade in meinem Browser, anstatt das herunterzuladen BildIch kann Bilder mit dynamischem Input python

Hier ist mein Code:

import easygui as eg 
import os 
import urllib 

url = eg.enterbox('Enter url: ', 'URL Choice') 
name = eg.enterbox('Enter name: ', 'Name') 

def DownloadImage(URL, name): 
    try: 
     image = urllib.urlopen(URL) 
     if image.headers.maintype == 'image': 
      buf = image.read() 
      path = os.getcwd() + 'C:\Users\USER\ImageGrabber\Pics' 
      file_path = '%s%s' % (path,name+'.jpg') 
      downloaded_image = file(file_path, 'wb') 
      downloaded_image.write(buf) 
      image.close() 
     else: 
      return False 
    except: 
     print 'Cannot access file' 
     return False 
    return True 

DownloadImage(url,name) 

ich die Typ-Funktion verwendet habe und das Ergebnis aus den Boxen Strings sind, so dass ich weiß nicht, warum es nicht

bearbeiten arbeiten: vergessen zu enthält Variablen

+0

Ich hoffe, Sie zur Verfügung gestellt, das Bild _type_ sein müssen zu deinem Dateinamen. Einfaches Herunterladen von Binärdaten hilft nicht, wenn Ihr Computer nicht erkennen kann, ob es im PNG- oder JPEG-Format ist. –

+0

Ich kann den Fehler nicht reproduzieren, den ich versuchte, dieses Image herunterzuladen 'https: //www.gravatar.com/avatar/775d6701040d31eb0a22479dec666b27? S = 32 & d = identicon & r = PG' und es scheint zu funktionieren –

+0

@AkshatMahajan ja ich habe Ich habe nur vergessen, das in meinen Post zu legen. Eine andere Sache, die ich hätte erwähnen sollen, ist, dass der Code jedes Mal zur Ausnahmeanweisung springt. –

Antwort

0

Ihr Zielpfad ist falsch os.getcwd() gibt Ihnen das aktuelle Arbeitsverzeichnis und Sie fügen ein absolutes Verzeichnis hinzu.

Also lassen Sie uns sagen, Ihr Skript in C:\myscript.py ist, os.getcwd() wird C:\ zurückkehren und Sie Anhängen an diesem C:\Users\USER\ImageGrabber\Pics, wird das Ergebnis C:\C:\Users\USER\ImageGrabber\Pics sein, die ein ungültiger Pfad ist daher die Ausnahme gehen.

path='C:\Users\USER\ImageGrabber\Pics\' 
# The last '\' is important 

, die funktionieren sollte

bearbeiten

kann ich nicht testen, da ich Linux renne aber das Verzeichnis kann wie dieses

path='C:/Users/USER/ImageGrabber/Pics/' 
+0

Ich sah @ TadhgMcDonald-Jensen's Kommentar vorher, aber das war mein exaktes Problem, danke –