无法在python中处理整个数据集-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

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

kun坤 2019-12-27 11:20:25 70

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

编解码 测试技术 Python
分享到
取消 提交回答
全部回答(1)
  • 问问小秘
    2019-12-27 16:22:46

    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()
    
    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程