从 GCS 存储桶读取标头 csv python

时间:2021-05-24 19:06:11

标签: python csv google-cloud-platform

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

我使用了图书馆。可以提取header,但是占用内存大。

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')

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

1 个答案:

答案 0 :(得分:1)

<块引用>
schema = f.read()

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

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

schema = f.read(100)

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

schema = f.readline()