开发者社区> 问答> 正文

无法在python中处理整个数据集

我有一个大约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

展开
收起
kun坤 2019-12-27 11:20:25 549 0
1 条回答
写回答
取消 提交回答
  • 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()
    
    2019-12-27 16:22:46
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载