首页 > 解决方案 > 从 GCS 存储桶中读取标头 csv python

问题描述

我想从云存储 GCP 中的 csv 中提取标头。问题是我提取了标头,但我有一个超过 20GB 的 csv 文件。

我用了一个图书馆。它可以提取标题,但需要大量内存。

import gcsfs

fs = gcsfs.GCSFileSystem(project=PROJECT)
with fs.open(f'{bucket}/{file}', 'rb') as f:
    schema = f.read().decode("utf-8") 
    # Remove all words after the first new line
    schema = re.sub("(\\n).*", "", schema)

我也试过这个命令,但它什么也没返回:

fs.read_block('gs://my-bucket/my-file.txt', offset=1000, length=10, delimiter=b'\n')

我的问题是如何只读标题而不是所有文件。

标签: pythoncsvgoogle-cloud-platform

解决方案


schema = f.read()

这将读取整个文件。据推测,如果gcsfs.GCSFileSystem.open像内置文件一样工作open,它应该采用一个整数参数来指定要读取的字节数。

例如,如果标头大小为 100 字节,请尝试:

schema = f.read(100)

或者,如果标题是文件中的第一行,由一个\n字符分隔,请尝试

schema = f.readline()

推荐阅读