Google Colab使用curl下载TTF文件出现unknown file format错误如何解决
问题原因
- 最常见原因是curl未开启重定向跟随:GitHub的raw资源链接通常会返回301/302重定向到真实的资源存储地址,默认配置的curl不会自动跟随重定向,最终下载到的是重定向提示的HTML页面,而非真实TTF字体文件,自然无法被字体解析库识别。
- 目标文件所在仓库为私有仓库,请求未携带认证信息,curl下载到的是403/404错误页面,不是有效字体文件。
- 保存路径不存在:Colab环境中若事先没有创建src目录,curl输出到不存在的路径时会生成损坏的空文件或错误格式文件。
解决方案
- 给curl添加跟随重定向参数,修改下载命令为:
!curl -L https://github.com/USERNAME/REPO/raw/master/src/arial.ttf -o src/arial.ttf - 提前创建存储目录,避免路径不存在导致的保存失败,执行下载命令前先运行:
!mkdir -p src - 下载完成后添加校验步骤,执行
!file src/arial.ttf,正常TTF文件会返回TrueType font data的识别结果,若返回HTML等其他内容则说明下载失败。 - 若为私有仓库,需在请求头中携带GitHub个人访问令牌,命令参考:
!curl -L -H "Authorization: token 你的个人访问令牌" https://github.com/USERNAME/REPO/raw/master/src/arial.ttf -o src/arial.ttf - 备选方案:使用默认自动跟随重定向的wget工具下载,命令为:
!wget https://github.com/USERNAME/REPO/raw/master/src/arial.ttf -P src/
内容的提问来源于stack exchange,提问作者Peter Rucker
相关产品推荐
相关产品推荐

