У меня есть специальные символы в списке, и это ломает SikuliX

Я пытаюсь получить пути в список, и все работает нормально, пока я не получу специальные символы, такие как ä или же ö, Например, в строке они представлены в байтах ä является \xe4, Если я использую тот же скрипт Python в Терминале, я правильно распечатаю все пути, даже если пути в списке содержат эти байты вместо реальных букв.

Вот мой код, где я извлекаю все имена файлов:

def read_files(path):
    """
    Read all files in folder specified by path
    :param path: Path to folder which contents will be read
    :return: List of all files in folder specified by path
    """
    files = []
    for f in listdir(path):
        if isfile(join(path, f)):
            files.append(make_unicode(join(path, f)))
    return files

def make_unicode(string):
    if type(string) != unicode:
        string = string.decode('utf-8')
    return string

Я понятия не имею, куда идти дальше. Я перепробовал практически все, что мог найти в Google. Это скорее проблема SikuliX, чем Python, потому что код Python отлично работает вне SikuliX.

Я использую Python 2.7 и SikuliX 1.1.1.

1 ответ

Решение

Так что я получил это покрыто. Проблема была в том, что read_files(path) функция была вызвана снова позже, и когда path был Unicode со специальными символами, помеченными как байты, все это сломалось. Я изменил свой код так, чтобы эта функция вызывалась только один раз, и тогда я смог работать со специальными символами.

Другие вопросы по тегам