Google Colab中urllib调用报错:'float'对象无'timeout'属性
问题解决:urllib.request.urlopen 报 AttributeError: 'float' object has no attribute 'timeout'
错误原因
你传入urlopen的Imagen是URL列表,且列表中存在float类型的元素(通常是CSV中的空值被解析成了NaN,属于float类型),或者直接把整个列表传给了urlopen——而urlopen的第一个参数需要是单个URL字符串,错误地传入float后,程序会把它当成Request对象去设置timeout属性,从而触发错误。
解决步骤
- 过滤无效URL:先清理CSV读取后的URL列表,排除非字符串、空值或NaN元素。
- 遍历处理单个URL:对列表中的每个有效URL单独调用
urlopen,而非传入整个列表。
修正后的代码示例
import pandas as pd import urllib.request from PIL import Image # 读取CSV文件(替换成你的文件名) df = pd.read_csv("your_csv_file.csv") # 过滤出有效的URL:仅保留字符串类型且非空的元素 valid_image_urls = [url for url in df['Imagen'] if isinstance(url, str) and url.strip()] # 逐个处理每个有效URL for url in valid_image_urls: try: resp = urllib.request.urlopen(url, timeout=300) background = Image.open(resp).convert("RGBA") background.thumbnail((150, 150)) # 这里添加你的后续处理逻辑,比如保存图片等 except Exception as e: print(f"处理URL {url}失败: {str(e)}")
额外提示
如果CSV中的空值是问题源头,也可以在读取CSV时指定keep_default_na=False,避免空值被解析成NaN:
df = pd.read_csv("your_csv_file.csv", keep_default_na=False)
内容的提问来源于stack exchange,提问作者NovaTec
相关产品推荐
相关产品推荐

