这句报错的意思的,csv读取的内容的某行内含有空字节
在Python里空字节是 \x00
In [1]: a = '\0'
In [2]: a
Out[2]: '\x00'
In [3]: b = '\x00'
In [4]: b
Out[4]: '\x00'
In [5]: a == b
Out[5]: True
先造个这样错误的文件出来,请在PyCharm里打印出来,然后把打印结果复制到一个csv文件里
print('1,\x00,2')
OK,异常文件有了
测试代码
with open('file.csv', 'r') as f:
reader = csv.reader(f)
next(reader)
不出意外会得到一个该死的异常:_csv.Error: line contains NULL byte
那么,如何修改呐,很简单,替换即可
修改代码
with open('file.csv', 'r') as f:
reader = csv.reader(_.replace('\x00', '') for _ in f)
next(reader)
为什么会有这种坑爹的错误?
1.写进去的数据里有这玩意
2.这个文件是个excel,结果却保存成了csv
3.多个进程对同一个文件进行读写操作