使用ast.literal_eval解析GCP存储文本时遇ValueError错误排查
ast.literal_eval()转换字典触发ValueError的原因
- 核心问题:
ast.literal_eval()有明确功能限制——它只能解析Python的字面量数据类型,包括字典、列表、字符串、数字、布尔值、None,完全不支持解析函数调用、类实例化这类带()的表达式。 - 你的报错直接指向文本内容里存在
ast.Call节点,说明从GCP Storage下载的metafile文本中,包含了类似函数调用的结构,比如:
或者{"create_time": datetime.datetime(2024, 6, 1)}
这类语句里的{"file_path": os.path.join("data", "log.txt")}datetime.datetime()、os.path.join()都是函数调用,ast.literal_eval()无法处理这类节点,因此抛出ValueError。
内容的提问来源于stack exchange,提问作者JPcodes
相关产品推荐
相关产品推荐

