gpt4 book ai didi

Python 从 url 逐行下载大型 csv 文件,只有 10 个条目

转载 作者:太空狗 更新时间:2023-10-30 01:49:55 24 4
gpt4 key购买 nike

我有一个很大的客户端 csv 文件并通过 url 共享以供下载,我想逐行按字节下载它,我只想限制 10 个条目。

我有以下代码可以下载文件,但我只想在这里下载文件的前 10 个条目,我不想要完整的文件。

#!/usr/bin/env python
import requests
from contextlib import closing
import csv

url = "https://example.com.au/catalog/food-catalog.csv"

with closing(requests.get(url, stream=True)) as r:
f = (line.decode('utf-8') for line in r.iter_lines())
reader = csv.reader(f, delimiter=',', quotechar='"')
for row in reader:
print(row)

我不太了解 contextlib,它如何与 Python 中的 with 一起工作。

任何人都可以在这里帮助我,这真的很有帮助,在此先感谢。

最佳答案

与生成器相比,contextlib 的问题不大。当您的 with block 结束时,连接将被关闭,非常简单。

实际执行下载的部分是 for row in reader:,因为 reader 包裹着 f,它是一个 惰性生成器。循环的每次迭代实际上都会从流中读取一行,可能由 Python 进行一些内部缓冲。

关键是在 10 行后停止循环。有几种简单的方法可以做到这一点:

for count, row in enumerate(reader, start=1):
print(row)

if count == 10:
break

或者

from itertools import islice

...

for row in islice(reader, 0, 10):
print(row)

关于Python 从 url 逐行下载大型 csv 文件,只有 10 个条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53815346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com