我正在从文件夹中读取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
由于我没有进行任何编码,因此无法理解编码错误。
答案 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)