注:该文章基于mac环境。
之前在写一个简单的分班程序的时候,使用如下命令行读取csv文件,
with open('city.csv') as f:
lines = f.readlines()
出现了报错:
‘utf-8’ codec can’t decode byte 0xb1 in position 0: invalid start byte
含义为程序由于文件编码问题无法读取文件。查找了一些解决方法后终于解决,稍稍总结。
出现此种问题的原因,可能来自python程序本身或文件。一是python文件可能没有声明读取文件的编码方式,导致程序无法读取,对应解决方法一;二是文件本身的编码不是utf-8格式,导致程序无法读取,对应解决方法二。
解决方法一:在python文件中加入编码方式声明
在python文件开头加入一行编码方式声明代码,使用# -*- coding: utf-8 -*-或#code=utf-8均可。该行声明了该python程序读取文件的编码格式为utf-8。
如果是由于python程序出现的问题,此时再次运行程序,应不再报错。如仍报错,可使用方法二解决。
解决方法二:修改文件编码方式/修改程序读取方式
假设文件存放路径为/Desktop/system_code/city.csv。打开终端(在应用程序搜索“terminal”),使用cd命令查看system_code文件夹并使用vim命令打开city.csv, 代码如下:
$ cd Desktop/system_code/
$ vim city.csv
此时终端会显示文件详细内容。之后使用: