Python错误类型错误:必须是字符串或缓冲区,而不是实例
我正在尝试下载QListWidget中列出的一些图像。我正在将链接传递到urllib,但它给了我类型错误:必须是字符串或缓冲区,而不是实例此错误。我试图在这里查找,但找不到任何解决方案。这是我的代码。谢谢Python错误类型错误:必须是字符串或缓冲区,而不是实例,python,typeerror,urllib,Python,Typeerror,Urllib,我正在尝试下载QListWidget中列出的一些图像。我正在将链接传递到urllib,但它给了我类型错误:必须是字符串或缓冲区,而不是实例此错误。我试图在这里查找,但找不到任何解决方案。这是我的代码。谢谢 def downloadStuff(self): files = self.listWidget.selectedItems() for filename in files: filename = filename.text() file
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()
如果看不到堆栈跟踪,很难确定,但我怀疑这一行:
imageFile.write(urllib.urlopen(filename)).read()
应改为:
imageFile.write(urllib.urlopen(filename).read())
顺便说一句,您不需要
imageFile.close()
行,因为with
语句会自动为您关闭文件。请修改格式。缩进已关闭,因此此代码实际上无法运行<代码>图像文件不需要关闭。将与
一起使用的全部意义在于,您不必管理这些类型的资源。包括整个堆栈跟踪。是的,兄弟,你是对的。非常感谢它现在可以工作了:)哦,好的。。我会删除它:)嘿,兄弟,你能告诉我在下载之前有没有办法知道文件的大小吗?原则上这是可能的,因为数据应该在文件头中,但对不起,我不知道如何准确地获取它。也许你可以单独问这个问题。酷。。无论如何,再次感谢兄弟。