【发布时间】:2015-09-01 12:24:47
【问题描述】:
我有一个可能是一个非常基本的 Python 问题。
我正在尝试编写一个脚本来消除一些 .csv 文件中的一堆空白行,并且我编写的脚本适用于我大约 90% 的文件,但有一些会向我抛出以下错误:
Traceback (most recent call last):
File "/Users/stephensmith/Documents/Permits/deleterows.py", line 17, in <module>
deleteRow(file, "output/" + file)
File "/Users/stephensmith/Documents/Permits/deleterows.py", line 8, in deleteRow
for row in csv.reader(input):
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/codecs.py", line 319, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/encodings/utf_8_sig.py", line 69, in _buffer_decode
return codecs.utf_8_decode(input, errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa2 in position 6540: invalid start byte
这是我的代码:
import csv
import os
def deleteRow(in_fnam, out_fnam):
input = open(in_fnam, 'r')
output = open(out_fnam, 'w')
writer = csv.writer(output)
for row in csv.reader(input):
if any(row):
writer.writerow(row)
input.close()
output.close()
for file in os.listdir("/Users/stephensmith/Documents/Permits/"):
print(file)
if file.endswith(".csv"):
deleteRow(file, "output/" + file)
我尝试在我的两个 open() 语句中添加 encoding='utf-8'、='ascii' 和 ='latin1',但没有成功。 :-( 知道我做错了什么吗?.csv 文件是使用 Excel for Mac 2011 创建的,如果有帮助的话。
【问题讨论】:
标签: python csv python-3.x unicode codec