【发布时间】:2015-11-17 03:55:25
【问题描述】:
我正在尝试从 url 读取压缩后的 csv 文件。这是一个非常大的文件,超过 50.000 行。当我尝试下面的代码时出现错误:_csv.Error: line contains NULL byte
import csv
import urllib2
url = '[my-url-to-csv-file].gz'
response = urllib2.urlopen(url)
cr = csv.reader(response)
for row in cr:
if len(row) <= 1: continue
print row
如果我在尝试读取文件之前尝试打印文件的内容,我会得到如下信息:
?M}?7?M==??7M???z?YJ?????5{Ci?jK??3b??p?
?[?=?j&=????=?0u'???}mwBt??-E?m??Ծ??????WM??wj??Z??ėe?D ?VF????4=Y?Y?tA???
我怎样才能正确地从这个 URL 读取压缩后的 csv 文件?
【问题讨论】:
-
我认为你在这里不需要
csv.reader...你试过response = urllib2.urlopen(url)data = response.read()response.close()for line in data: print line吗? -
如果我尝试这种方法,我会得到内容,但我认为它的编码错误,我会得到类似:
% s Z ? o ? J 1 v ? } ? ? D ? ? ? ? ? ? ? ? ? ? -
试试
for line in data: line = line.decode('utf-8') print linedocs.python.org/dev/tutorial/stdlib.html#internet-access -
是的,但我得到了错误,gzip 中的 csv 是否重要?
-
这很重要;请参阅下面的答案。
标签: python csv gzip urllib2 urlopen