Python: как обращаться с международными символами в именах файлов для glob и fnmatch? - PullRequest
2 голосов
/ 19 февраля 2020

Я хочу l oop поверх всех файлов в каталоге. Я пробовал glob:

from glob import glob
for filename in glob('*'):
    print filename

и пробовал fnmatch:

import fnmatch
import os
for file in os.listdir('.'):
    if fnmatch.fnmatch(file, '*'):
        print(file)

Если имя файла содержит немецкий символ (ä, ö, ü, ...), то функция печати печатает пустая строка. Как я могу обработать int'l символы в этом случае?

UPDATE
Работает в GIMP 2.10.16 Python -Fu Console 2.7.17 на Debian, но не на Windows система (те же версии).

И пустую строку я получаю только во второй раз, когда вставляю и выполняю скрипт в консоли. При первом запуске GIMP / Pythen-Fu в списке файлов вместо правильных имен файлов отображается множество сообщений об ошибках:

C: \ Users \ jamacoe \ AppData \ Local \ Programs \ GIMP 2 \ lib \ gimp \ 2.0 \ plug-ins \ python -console / pyconsole.py: 74: GtkWarning: gtk_text_buffer_emit_insert: утверждение 'g_utf8_validate (text, len, NULL)' не удалось самостоятельно. , self.tag_name)
C: \ Users \ jamacoe \ AppData \ Local \ Programs \ GIMP 2 \ lib \ gimp \ 2.0 \ plug-ins \ python -console / pyconsole.py: 74: GtkWarning: Неверный текстовый буферный итератор: либо итератор не инициализирован, либо символы / pixbufs / widgets в буфере были изменены с момента создания итератора.
Вы должны использовать метки, номера символов или номера строк, чтобы сохранить позицию в буфере модификации.
Вы можете применять теги и вставлять метки, не делая недействительными ваши итераторы, но любую мутацию, которая влияет на «индексируемое» содержимое буфера (содержимое, на которое можно ссылаться с помощью символа off set)
сделает недействительными все ожидающие итераторы
self.buffer.insert_with_tags_by_name (pos, text, self.tag_name)
C: \ Users \ jamacoe \ AppData \ Local \ Programs \ GIMP 2 \ lib \ gimp \ 2.0 \ plug-ins \ python -console / pyconsole.py: 74: GtkWarning: gtk_text_buffer_apply_tag_by_name: утверждение 'gtk_text_iter_get_buffer (конец) == буфер' не удалось
self.buffer.insert_withtags tag_name)

...