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

如何读取路径含空格的GCS Parquet文件到Polars DataFrame?

解决Polars读取GCS带空格路径Parquet文件的404问题

问题出在你手动生成URI时对路径做了URL编码(将空格转为%20),而GCS存储的对象名称是原始带空格的字符串,编码后的路径会被识别为完全不同的对象路径,导致找不到文件。以下是两种可行的解决方法:

方法一:直接用Blob原始名称构建GS路径

放弃自己截取file.id拼接URI的方式,利用blob.name获取原始未编码的对象名称,直接构建符合要求的GS路径:

from google.cloud import storage
import polars as pl

# 初始化GCS客户端与存储桶
client = storage.Client()
bucket = client.get_bucket("bucketname")

# 遍历桶内文件并读取
for blob in bucket.list_blobs():
    # 用原始名称构建路径,保留空格
    gs_path = f"gs://{bucket.name}/{blob.name}"
    # Polars底层的gcsfs会自动处理空格编码,直接读取即可
    df = pl.read_parquet(gs_path)
    # 后续数据处理逻辑

方法二:显式使用gcsfs读取文件流

如果需要更精细的存储控制,可以直接用gcsfs库打开文件流,再传给Polars读取:

import gcsfs
import polars as pl

# 初始化GCS文件系统
fs = gcsfs.GCSFileSystem()

# 直接使用带空格的原始路径
file_path = "gs://bucketname/long_path/a_key=a_value/another_key=something_pre_space something_after_a_space/0.parquet"
with fs.open(file_path, "rb") as f:
    df = pl.read_parquet(f)

错误原因说明

你通过file.id截取的对象路径已经是URL编码后的格式(空格变为%20),但GCS中存储的对象名称是原始的带空格字符串,编码后的路径会被GCS判定为不存在的对象,因此返回404错误。Polars依赖的gcsfs库会自动处理路径中的特殊字符编码,无需手动转换。

内容的提问来源于stack exchange,提问作者blake s

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:51:16