[英]Download .csv file using python
我正在嘗試下載.csv文件並將其保存到我的計算機上。 但是,當我運行以下腳本時,出現錯誤“錯誤:行包含NULL字節”。 我做錯了什么?
import csv
import urllib2
url = 'http://wildfire.alberta.ca/reports/activedd.csv'
response = urllib2.urlopen(url)
cr = csv.reader(response)
for row in cr:
print row
您嘗試下載的文件為UTF-16格式,而CSV模塊不是為此設計的。 您需要將其從UTF-16解碼為其他格式。 例如:
import csv
import codecs
import urllib2
url = 'http://wildfire.alberta.ca/reports/activedd.csv'
response = urllib2.urlopen(url)
cr = csv.reader([x.strip() for x in codecs.iterdecode(response, 'UTF-16')])
data = [x for x in cr]
# Manipulate the data here
# Now to save the CSV:
with open('outputfile.csv', 'wb') as output:
writer = csv.writer(output)
writer.writerows(data)
如果只需要下載文件而不進行操作,則有更好的方法(請參見minitoto的答案)。
這是一個示例,必須手動刪除換行符才能正常工作,所以我敢肯定有更好的方法,但這是主要問題
我猜最簡單的方法是使用urlretrieve
:
import urllib
url = 'http://wildfire.alberta.ca/reports/activedd.csv'
urllib.urlretrieve(url, "activedd.csv")
這就是我所做的。 懶惰的方式。
import urllib2
url = 'http://wildfire.alberta.ca/reports/activedd.csv'
response = urllib2.urlopen(url)
with open('activeddData.csv','w') as csvFile:
for line in response.readlines():
csvFile.write(line)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.