Я пытаюсь написать небольшой скрипт для написания таблицы sqlite из списка архивов, сохраненного в файле. код до сих пор это:Проблемы с кодированием в python x64
import os import _sqlite3 import sys
print sys.path[0] mydir = sys.path[0] print (mydir) def listdir(mydir):
lis=[]
for root, dirs, files in os.walk(mydir):
for name in files:
lis.append(os.path.join(root,name))
return lis
filename = "list.txt" print ("writting in %s" % filename) file = open(filename, 'w') for i in listdir(mydir):
file.write(i)
file.write("\n") file.close()
con =
_sqlite3.connect("%s/conection"%mydir) c=con.cursor()
c.execute(''' drop table files ''') c.execute('create table files (name text, other text)') file = open(filename,'r') for line in file :
a = 1
for t in [("%s"%line, "%i"%a)]:
c.execute('insert into files values(?,?)',t)
a=a+1 c.execute('select * from files') print c.fetchall() con.commit() c.close()
когда я бегу я получаю следующее:
Traceback (most recent call last): File "C:\Users\josh\FORGE.py", line 32, in <module>
c.execute('insert into files values(?,?)',t) ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings.
i've пытался с юникода(), построенной в функции, но до сих пор won't работу, сказав, что он не может декодировать символ 0xed или что-то еще.
Я знаю, что проблема связана с кодировкой строк списка, но я не могу найти способ правильно их исправить. есть идеи? заранее спасибо!
http://farmdev.com/talks/unicode/ –