|
本帖最后由 pikefreeman 于 2019-7-5 13:24 编辑
在学习python基础教程第十三章数据库时书上有个例子,让我写了一个python脚本用来将ascii格式的纯文本文件导入数据库,脚本代码如下:- import sqlite3
- def convert(value):
- if value.startswith('~'):
- return value.strip('~')
- if not value:
- value = '0'
- return float(value)
- conn = sqlite3.connect('food.db')
- curs = conn.cursor()
- curs.execute('''
- CREATE TABLE food(
- id TEXT PRIMARY KEY,
- desc TEXT,
- water FLOAT,
- kcal FLOAT,
- protein FLOAT,
- fat FLOAT,
- ash FLOAT,
- carbs FLOAT,
- fiber FLOAT,
- sugar FLOAT
- )
- ''')
- query = 'INSERT INTO food VALUES (?,?,?,?,?,?,?,?,?,?)'
- field_count = 10
- for line in open('ABBREV.txt'):
- fields = line.split('^')
- vals = [convert(f) for f in fields[:field_count]]
- curs.execute(query, vals)
- conn.commit()
- conn.close()
复制代码 然后再linux下运行发生错误:- Traceback (most recent call last):
- File "importdata.py", line 31, in <module>
- for line in open('ABBREV.txt'):
- File "/usr/lib/python3.7/codecs.py", line 322, in decode
- (result, c**umed) = self._buffer_decode(data, self.errors, final)
- UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 5194: invalid continuation byte
复制代码 说是编码错误?到底是哪里的编码不对?在windows环境下执行代码没有任何问题,谢谢各位!
|
|