擅长:python、mysql、java
<p>为了简化这些答案,并在下载大文件时提高性能,下面的操作可能会更有效一些。</p>
<pre><code>import requests
from contextlib import closing
import csv
url = "http://download-and-process-csv-efficiently/python.csv"
with closing(requests.get(url, stream=True)) as r:
reader = csv.reader(r.iter_lines(), delimiter=',', quotechar='"')
for row in reader:
print row
</code></pre>
<p>通过在GET请求中设置<code>stream=True</code>,当我们将<code>r.iter_lines()</code>传递给csv.reader()时,我们将向csv.reader()传递一个<a href="https://wiki.python.org/moin/Generators" rel="noreferrer">generator</a></strong>。通过这样做,我们使csv.reader()能够懒洋洋地遍历带有<code>for row in reader</code>的响应中的每一行。</p>
<p>这避免了在开始处理之前将整个文件加载到内存中,从而大大减少了大型文件的内存开销<em>。</p>