首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用python请求下载CSV

使用python请求下载CSV
EN

Stack Overflow用户
提问于 2016-02-12 19:49:32
回答 12查看 176.4K关注 0票数 71

这是我的代码:

代码语言:javascript
运行
复制
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文件:

代码语言:javascript
运行
复制
print download.content

此打印第一行并返回错误:_csv.Error:在未引号字段中看到的新行字符。

代码语言:javascript
运行
复制
cr = csv.reader(download, dialect=csv.excel_tab)
for row in cr:
    print row

这将在每一行打印一封信,并且不会打印全部内容:

代码语言:javascript
运行
复制
cr = csv.reader(download.content, dialect=csv.excel_tab)
for row in cr:
    print row

我的问题是:在这种情况下,读取csv文件的最有效方法是什么?以及如何下载。

谢谢

EN

Stack Overflow用户

发布于 2016-02-12 20:31:45

从一个小小的搜索中,我知道文件应该以通用换行符模式打开,这是您不能直接使用响应内容的(我猜)。

要完成任务,可以将下载的内容保存到临时文件中,也可以在内存中处理。

保存为文件:

代码语言:javascript
运行
复制
import requests
import csv
import os

temp_file_name = 'temp_csv.csv'
url = 'http://url.to/file.csv'
download = requests.get(url)

with open(temp_file_name, 'w') as temp_file:
    temp_file.writelines(download.content)

with open(temp_file_name, 'rU') as temp_file:
    csv_reader = csv.reader(temp_file, dialect=csv.excel_tab)
    for line in csv_reader:
        print line

# delete the temp file after process
os.remove(temp_file_name)

记忆中:

(待更新)

票数 4
EN
查看全部 12 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35371043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档