使用Hugging Face datasets加载本地json报文件名过长错误如何解决
问题原因
这个错误是Hugging Face Datasets库生成缓存文件时,自动拼接的缓存文件名长度超过了操作系统的单文件名字符数限制(Linux下ext4文件系统默认单文件名最大长度为255字符),你报错信息中的lock文件名称过长,因此触发OSError 36。
你的JSON文件格式合法,不需要调整文件内容,只需要修改缓存配置即可解决问题。
解决方案
- 方案1:单次指定短路径缓存目录(最便捷)
在加载数据集时手动指定一个层级少、路径短的本地缓存目录即可:
from datasets import load_dataset import os # 提前创建短路径缓存文件夹 os.makedirs("./hf_cache", exist_ok=True) dataset = load_dataset('json', data_files=['./100009.json'], cache_dir="./hf_cache")
- 方案2:全局修改默认缓存目录
如果需要批量处理多个数据集,可以修改Hugging Face Datasets的全局缓存路径,在运行代码前执行终端命令设置环境变量:export HF_DATASETS_CACHE="./hf_cache"
如果需要永久生效,可将上述命令添加到~/.bashrc(bash环境)或~/.zshrc(zsh环境)文件中,重启终端后生效。 - 方案3:禁用数据集缓存
如果不需要保留缓存的预处理数据,可以直接关闭缓存功能:
from datasets import load_dataset dataset = load_dataset('json', data_files=['./100009.json'], cache_dir=None)
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

