我想从云存储 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')
我的问题是如何只读取标题而不是所有文件。
答案 0 :(得分:1)
schema = f.read()
这会读取整个文件。据推测,如果 gcsfs.GCSFileSystem.open
像内置文件 open
一样工作,它应该使用一个整数参数来指定要读取的字节数。
例如,如果标头大小为 100 字节,请尝试:
schema = f.read(100)
或者,如果标题是文件中的第一行,用 \n
字符分隔,请尝试
schema = f.readline()