You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python加载本地文件至TextUrl报错:URL格式验证失败

解决本地文件路径无法通过TextUrl验证的问题

错误原因

TextUrl类型要求输入符合标准URL格式,你直接传入的Windows本地路径(C:\\...)不属于合法URL范畴,因此触发Pydantic的验证错误。

解决方案

方案1:将本地路径转换为file协议URL

Windows系统的本地文件对应URL格式为file:///C:/...(注意开头三个斜杠,路径统一用正斜杠),修改代码如下:

doc = MyText(
    url="file:///C:/Users/User/PycharmProjects/vector_database_using_vectordb/games.txt"
)

# 直接读取本地文件内容(避开TextUrl的load方法,避免适配问题)
with open("C:\\Users\\User\\PycharmProjects\\vector_database_using_vectordb\\games.txt", "r", encoding="utf-8") as f:
    doc.text = f.read()

assert doc.text.startswith('<TITLE>Read Me</TITLE>')

也可以用原始字符串简化路径写法:

file_path = r"C:\Users\User\PycharmProjects\vector_database_using_vectordb\games.txt"
doc = MyText(url=f"file:///{file_path.replace('\\', '/')}")

with open(file_path, "r", encoding="utf-8") as f:
    doc.text = f.read()

方案2:修改模型字段类型(放弃URL验证)

如果不需要对url字段做严格的URL格式校验,直接将TextUrl替换为普通字符串类型:

from docarray import BaseDoc

class MyText(BaseDoc):
    text: str = None
    url: str = None  # 替换TextUrl为str类型

之后直接传入本地路径即可:

doc = MyText(
    url="C:\\Users\\User\\PycharmProjects\\vector_database_using_vectordb\\games.txt"
)

with open(doc.url, "r", encoding="utf-8") as f:
    doc.text = f.read()

assert doc.text.startswith('<TITLE>Read Me</TITLE>')

额外说明

原代码中doc.url.load()的写法大概率不支持本地文件路径,因为TextUrl的load方法通常为HTTP/HTTPS URL设计,直接使用Python内置的open()函数读取本地文件更可靠。

内容的提问来源于stack exchange,提问作者Rasai Stewart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 02:06:08