从文件夹中读取csv文件时解码错误

时间:2018-05-30 05:35:32

标签: python python-3.x

我正在从文件夹中读取csv文件的标题。

代码:

#mypath = folder directory with the csv files
for each_file in listdir(mypath):
  with open(mypath +"//"+each_file) as f:
     first_line = f.readline().strip().split(",")

错误:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 3131: invalid start byte

环境:

Spyder, Python 3

由于我没有进行任何编码,因此无法理解编码错误。

3 个答案:

答案 0 :(得分:0)

尝试使用单斜杠'/'

请尝试使用

with open(mypath +"/"+each_file) as f:

另一个问题可能是CSV文件包含Unicode,而不是UTF8。如果您发布CSV文件样本也很容易。

答案 1 :(得分:0)

在with条件下打开文件时尝试使用编码。我尝试了以下代码,并为我工作得很好。请尝试不同的编码,看看是否有任何编码

for each_file in listdir(path):
    with open(path +"//"+each_file,encoding='utf-8') as f:
        first_line = f.readline().strip().split(",")
        print(each_file ,' --> ',first_line)

另外,请检查此链接以检查CSV的文件编码。希望它有所帮助。

How to check encoding of CSV file

快乐编码:)

答案 2 :(得分:0)

内置的os.path.join提供了一种方便的方法来连接两个或更多路径,而不必担心平台特定的斜杠'/'或'\'。

import os

files = os.listdir(path)

for file in files:
    with open(os.path.join(path, file), encoding='utf-8') as f:
        first_line = str(f.readline()).strip().split(",")
        print(file, ' --> ', first_line)