Написал скрипт для создания книжных полок в Reader-е Kobo.
В Linux (Python v3.5.2) все работает хорошо. В Windows из под debuger PyCharm (в Setting-Project intrpreter установлен 3.5.2) тоже исполняется без ошибок.
Если запускаю вот так (Python v3.5.2):
c:\opt\python35\python.exe KoboShelf.py
, то возникает ошибка:
file:///mnt/sd/Books/Метро 2033/Метро-2033 00 Кобелев. Прятки с Солнцем.
file:///mnt/sd/Books/Метро 2033/Метро-2033 47 Буторин Мутант.epub
. . . .
. . . .
file:///mnt/sd/Books/Метро 2033/Метро-2033 44 Киреев Белый барс.epub
file:///mnt/sd/Books/Метро 2033/Метро-2033 04 Дьяков К свету.epub
Traceback (most recent call last):
File "KoboShelf.py", line 198, in <module>
main(sys.argv)
File "KoboShelf.py", line 190, in main
addBook(location, book_path, f_name, c)
File "KoboShelf.py", line 138, in addBook
print('\t%s' % book_full_path)
File "c:\opt\python35\lib\encodings\cp866.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2013' in position
Вот текст функции в которой возникает ошибка.
def addBook(location, book_path, f_name, cursorSQL):
book_shelf = os.path.basename(book_path)
addBookShelf(book_shelf, cursorSQL)
book_full_path = location + book_path + '/' + f_name
book_full_path = book_full_path.replace("\\", "/")
print('\t%s' % book_full_path) # <- вот на эту строку ссылается диагностика ошибки
v_ShelfName = book_shelf
v_ContentId = book_full_path
v_DateModified = datetime.now().strftime('%Y-%m-%dT%H:%M:%S.%f%z')[:-3]
v__IsDeleted = "False"
v__IsSynced = "False"
cursorSQL.execute('''INSERT INTO ShelfContent
(ShelfName, ContentId, DateModified, _IsDeleted, _IsSynced)
VALUES(?,?,?,?,?)''',
( v_ShelfName, v_ContentId, v_DateModified, v__IsDeleted, v__IsSynced )
)
Подскажите, в чем проблема и почему она так избирательно проявляется?