Экспорт вложений из ГБД с кириллическими символами

0 голосов
спросил 04 Июль, 17 от GRM (260 баллов)

Нашел скрипт .py экспортирующий вложения из ГБД.

С латинскими названиями вложений работает, но при попадании на кириллические символы стопорится и вылетает. 

Как указать правильную кодировку для работы скрипта с лат и кириллическими символами?

    import arcpy
    from arcpy import da
    import os

    inTable = arcpy.GetParameterAsText(0)
    fileLocation = arcpy.GetParameterAsText(1)

    with da.SearchCursor(inTable, ['DATA', 'ATT_NAME', 'ATTACHMENTID']) as cursor:
    for item in cursor:
    attachment = item[0]
    filenum = "ATT" + str(item[2]) + "_"
    filename = filenum + str(item[1])
    open(fileLocation + os.sep + filename, 'wb').write(attachment.tobytes())
    del item
    del filenum
    del filename
    del attachment

2 Ответы

0 голосов
ответил 05 Июль, 17 от kopin (260 баллов)

Тема кодировок в Python 2.7 достаточно обширная, вот некоторые ссылки:

http://www.py-my.ru/post/4bfb3c6a1d41c846bc00009b

https://docs.python.org/2/howto/unicode.html

Есть разные пути решения проблемы. Самый простой - явное декодирование строки в юникод с  указанием кодировки. В вашем случае это наверное будет выглядеть так:

filename = filenum + str(item[1].decode('utf-8'))

При условии, что item[1] - это строка в кодировке UTF-8 в которой встречаются кириллические символы. Правда, в таком случае ее не надо дополнительно конвертировать в строку методом str().

0 голосов
ответил 05 Июль, 17 от Grigoriy (125,340 баллов)
# -*- coding:utf-8 -*-
import arcpy
from arcpy import da
import os

inTable = arcpy.GetParameterAsText(0)
fileLocation = ur'{0}'.format(arcpy.GetParameterAsText(1))
with da.SearchCursor(inTable, ['DATA', 'ATT_NAME', 'ATTACHMENTID']) as cursor:
    for item in cursor:
        attachment = item[0]
        # filenum = "ATT" + str(item[2]) + "_"
        filename = u'ATT{0}_{1}'.format(item[2], item[1])
        open(fileLocation + os.sep + filename, 'wb').write(attachment.tobytes())
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...