这是我的代码:
import csv
import requests
with requests.Session() as s:
s.post(url, data=payload)
download = s.get('url that directly download a csv report')
这使我可以访问csv文件。我尝试了不同的方法来处理下载:
这将在一个字符串中给出csv文件:
print download.content
这将打印第一行并返回错误:_csv.error:未引用字段中出现的新行字符
cr = csv.reader(download, dialect=csv.excel_tab)
for row in cr:
print row
这将在每行中打印一封信,但不会打印全部内容:
cr = csv.reader(download.content, dialect=csv.excel_tab)
for row in cr:
print row
我的问题是:在这种情况下,读取csv文件最有效的方法是什么。 以及如何下载。
谢谢
您还可以使用^{} 来迭代
{'columnname': 'value', ...}
的字典这应该有助于:
输出示例:
有答案的相关问题:https://stackoverflow.com/a/33079644/295246
编辑:如果需要下载大文件(即
stream=True
),其他答案也很有用。为了简化这些答案,并在下载大文件时提高性能,下面的操作可能会更有效一些。
通过在GET请求中设置
stream=True
,当我们将r.iter_lines()
传递给csv.reader()时,我们将向csv.reader()传递一个generator。通过这样做,我们使csv.reader()能够懒洋洋地遍历带有for row in reader
的响应中的每一行。这避免了在开始处理之前将整个文件加载到内存中,从而大大减少了大型文件的内存开销。
相关问题 更多 >
编程相关推荐