2016-11-30 5 views
1

Ich versuche, einige Bilder herunterzuladen, die in QListWidget aufgeführt sind. Ich übergebe die Links an die Urllib, aber es gibt TypeError: muss String oder Puffer sein, nicht Instanz dieser Fehler. Ich habe versucht, hier nachzusehen, konnte aber keine Lösung finden, hier ist mein Code. DankPython-Fehler TypeError: muss String oder Puffer sein, nicht Instanz

def downloadStuff(self): 
    files = self.listWidget.selectedItems() 
    for filename in files: 
     filename = filename.text() 
     filename = str(filename) 
     print filename 
     xfilename = filename.split('/')[-1] 
     with open('D:/'+xfilename,'wb') as imageFile: 
      print filename 
      imageFile.write(urllib.urlopen(filename)).read() 
     imageFile.close() 
+0

Bitte korrigieren Sie Ihre Formatierung. Ihr Einzug ist deaktiviert, sodass dieser Code nicht ausgeführt werden würde. 'imageFile' muss nicht geschlossen werden. Der Sinn von 'mit' liegt darin, dass Sie diese Art von Ressourcen nicht verwalten müssen. Und schließe den gesamten Stack-Trace ein. – skrrgwasme

Antwort

1

Es ist schwer, sicher zu sagen, ohne die Stack-Trace zu sehen, aber ich vermute, diese Zeile:

imageFile.write(urllib.urlopen(filename)).read() 

stattdessen werden soll:

imageFile.write(urllib.urlopen(filename).read()) 

übrigens, nicht wahr brauche die imageFile.close() Zeile, weil die with Anweisung die Datei für dich automatisch schließt.

+0

Ja, Bruder, du hast Recht. Vielen Dank es funktioniert jetzt :) – laslavinco

+0

oh okay .. ich werde es entfernen :) – laslavinco

+0

Und hey bro können Sie mir sagen, gibt es eine Möglichkeit, die Dateigröße vor dem Download zu wissen? – laslavinco

Verwandte Themen