2016-11-30 55 views
1

我想下载一些QListWidget中列出的图像,我将链接传递给urllib,但它给了我TypeError:必须是字符串或缓冲区,而不是实例此错误。我试着在这里查找,但无法找到任何解决方案,这里是我的代码。由于Python错误类型错误:必须是字符串或缓冲区,而不是实例

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

请修复您的格式。你的缩进是关闭的,所以这段代码实际上不会运行。 'imageFile'不需要关闭。使用'with'的重点在于,您不必管理这些资源。并包括整个堆栈跟踪。 – skrrgwasme

回答

1

很难肯定地说没有看到堆栈跟踪,但我怀疑这条线:

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

应改为:

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

顺便说一句,你不需要imageFile.close()行,因为with语句会自动关闭该文件。

+0

是的兄弟你是对的。非常感谢它现在的工作:) – laslavinco

+0

哦好吧..我会删除它:) – laslavinco

+0

嘿兄弟你能告诉我有什么办法在下载之前知道文件大小吗? – laslavinco

相关问题