我有一个大约2100个相同格式文件的数据集,我正在从中抓取一些数据。我运行了以下代码来获取scanfile函数生成的字典,并将其写入csv文件
def createtable():
x = os.listdir('./dataset')
with open('data.csv', mode='w') as csv_file:
fieldnames = ['name', 'Error', 'val1', 'val2']
writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
writer.writeheader()
for i in range(1400, 1500):
writer.writerow(scanFile(x[i]))
当我这样做的范围小于300,我创建了我想要的csv文件成功,但当我试图做整个事情,我得到这个错误…
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 3131: invalid start byte
我如何解决这个问题?我真的不知道如何开始修复它,因为它适用于小的测试用例,但是在更大的范围内失败了。 问题来源StackOverflow 地址:/questions/59383176/unable-to-process-entire-dataset-in-python
def saveobject(obj):
save=(obj.field1, obj.field2, obj.field3)
con = sqlite3.connect('test.db')
with con:
cur = con.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS Users(field1 TEXT, field2 INT, field3 INT)")
allrows = cur.fetchall()
print allrows
if(len(allrows)==0):
cur.execute("INSERT INTO Users VALUES(?,?,?)", save)
else:
for row in allrows:
if(obj.field1==row[0]):
if(obj.field2==row[1]):
print 'Object already Present'
break
else:
print 'Object field2 updated'
cur.execute("UPDATE Users set field2=(?) where field1=(?)", (obj.field2, obj.field1))
break
else:
cur.execute("INSERT INTO Users VALUES(?,?,?)", save)
print 'User added'
print 'after ', cur.fetchall()
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。