这是我的代码:
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文件的最有效方法是什么?以及如何下载。
谢谢
发布于 2016-02-12 20:31:45
从一个小小的搜索中,我知道文件应该以通用换行符模式打开,这是您不能直接使用响应内容的(我猜)。
要完成任务,可以将下载的内容保存到临时文件中,也可以在内存中处理。
保存为文件:
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)记忆中:
(待更新)
https://stackoverflow.com/questions/35371043
复制相似问题