ValueError:未知网址类型:'h'

时间:2016-11-02 00:37:49

标签: python

好的,所以我正在努力运行这个程序,我相信这个功能就是问题

urls = ('http://3.bp.blogspot.com/-SC-w7eTgpM0/URE9NsI_nuI/AAAAAAAAAGE/YmlWnimNuPM/s1600/7957178556_001939ffc5_z.jpg')
for addr in urls:
        get_img_from_web(addr)
images, names = scan_dir()
lum_values = []
for i in range(256):
        lum_values.append(i)
header = 'Jack Tompkins\n'+','.join(str(lum) for lum in lum_values)+'\n\n'
with open('p1TompkinsHistogram.csv', 'w') as f:
        f.write(header)
        for i, im in enumerate(images):
           data = get_data(im)
           path = names[i]
           last_slash = path.rfind('/')
           name = path[last_slash+1:]
           f.write(name +',' + im.mode + ',' + data + ',')
           h_r, h_g, h_b = get_histograms(im)
           f.write(get_histogram_data(h_r, h_g, h_b) + '\n')
           f.write(','.join(str(i) for i in h_r) + '\n')
           f.write(','.join(str(i) for i in h_g) + '\n')
           f.write(','.join(str(i) for i in h_b) + '\n')

`

这是我得到的错误的结束

raise ValueError("unknown url type: %r" % self.full_url)
ValueError:unknown url type: 'h'

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

你的问题在这里:

urls = ('http://3.bp.blogspot.com/-SC-w7eTgpM0/URE9NsI_nuI/AAAAAAAAAGE/YmlWnimNuPM/s1600/7957178556_001939ffc5_z.jpg')
for addr in urls:

您的意思是将urls定义为元组,但它实际上是单个字符串。因为括号不包含任何逗号,所以Python将其视为单个要计算的表达式,就像(2 + 2)是4而不是包含4的元组一样。字符串是可迭代的并且产生它们的组成字符,因此addr是字符串中的每个字符。因此,您尝试打开h,然后t,然后t,依此类推。或者,如果您尝试打开h,则不会给您一个错误。

解决方案是使用尾随逗号编写urls,确保Python将其视为元组,或者只使用方括号并使其成为列表。或者当然,使用多个项目。