OpenFile

Автор Ципихович Эндрю, 2 января 2024, 21:38

0 Пользователи и 3 гостей просматривают эту тему.

bigor

так os.path.isfile наверное нужно просто "c:\папка\файл", а loadComponentFromURL  "file:///c:/%D0%BF%D0%B0%D0%BF%D0%BA%D0%B0/%D1%84%D0%B0%D0%B9%D0%BB
Поддержать наш форум можно здесь

Ципихович Эндрю

так, а как его конвертировать?

Ципихович Эндрю

это называется, одни люди, человеки
создали проблемы, чтобы другие мучались....... две косые мало, даёшь три.....
doc = desktop.loadComponentFromURL('file:///' + patch_doc + l, "_blank", 0, ())и взлетело...

bigor

Цитата: Ципихович Эндрю от  8 января 2024, 20:34что происходит с url?
если имена папок файлов латинскими буквами без пробелов и прочих спецсимволов, то достаточно вначале file:/// прописать и обратные слэши заменить на прямые. А вот если русские, то уже сложнее
Поддержать наш форум можно здесь

Ципихович Эндрю

ну и последние шажки, думал обойтись малой кровью, думал закрою файл строкой doc.Close - увы нет
нашёл пример:
desktop = getCurrentDesktop() # закрыть файл
desktop.disposeComponent(doc) # закрыть файл
увы ошибка, не в курсе как нужно?
вот полный код этого места:
        ctx = uno.getComponentContext() # open a writer document=открыть документ Writer
        smgr = ctx.ServiceManager # open a writer document=открыть документ Writer
        desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop", ctx) # open a writer document=открыть документ Writer
        for l in filelst:
            if l.lower().endswith('.htm'):
                HtmFileCount += 1
                doc = desktop.loadComponentFromURL('file:///' + patch_doc + l, "_blank", 0, ()) # open a writer document=открыть документ Writer
                txt = txt + str(doc.Text)
                # doc.Close # закрыть файл
                desktop = getCurrentDesktop() # закрыть файл
                desktop.disposeComponent(doc) # закрыть файл
спасибо

Ципихович Эндрю

а вообще, чтобы работать со скриптами python в LibreOffice python на ПК должен быть установлен?, а то я читал как устранить ошибку и часто упоминается о возможной проблеме с установкой модуля python-uno

bigor

а просто desktop.dispose не работает?
Поддержать наш форум можно здесь

Ципихович Эндрю

Цитата: bigor от  8 января 2024, 22:17а просто desktop.dispose не работает?
и ошибки не возникает и не закрывает файл

mikekaganski

Цитата: Ципихович Эндрю от  8 января 2024, 21:29                # doc.Close # закрыть файл

XCloseable::close пишется со строчной, и принимает булевый аргумент (при запрете закрытия передать обязанности закрытия запрещающей стороне или нет).

Цитата: Ципихович Эндрю от  8 января 2024, 21:29увы ошибка, не в курсе как нужно?

Всегда указывайте какая ошибка.
С уважением,
Михаил Каганский

Ципихович Эндрю

Цитата: mikekaganski от  9 января 2024, 07:07пишется со строчной
даже если так, то нужно doc.close(), а правильный ответ
doc.dispose() # закрыть файл

mikekaganski

#55
Цитата: Ципихович Эндрю от  9 января 2024, 07:25правильный ответ

disposeComponent как раз это и делает. Так что

Цитата: mikekaganski от  9 января 2024, 07:07Всегда указывайте какая ошибка

Цитата: Ципихович Эндрю от  9 января 2024, 07:25даже если так, то нужно doc.close()

Нет, "даже если так", то нужно doc.close(true)
С уважением,
Михаил Каганский

Ципихович Эндрю

Цитата: mikekaganski от  9 января 2024, 07:27Всегда указывайте какая ошибка
да я не против, если б она копировалась))
также у меня ещё оказывается в txt не правильно добавлялось содержимое документа, ну ладно намётки есть что там может быть..........
но докодился до того, что получаю сообщение unknown=неизвестный на строке которая уже была проверена и работала правильно, то есть сие кодирование очень чувствительно к написанному, не очень любит копирование и вставку в код с другого места, то есть типа бери и пишу тут и точка, если я строку с ошибкой закомментирую, ошибка возникнет на строке ниже, такие дела
и режим отображать непечатаемые знаки в блокноте++ не помогает

mikekaganski

Цитата: Ципихович Эндрю от  9 января 2024, 08:42да я не против, если б она копировалась))

Так она и копируется. Достаточно попробовать.
В крайнем случае можно добавить скриншот.
С уважением,
Михаил Каганский

Ципихович Эндрю

одним словом как открыть\закрыть документ уже ясно, теперь затык как с него в переменную взять его текст, варианты:
txt = str(doc.getText())
txt = str(doc.Text)
txt = str(doc.getPropertyValue('Text'))
не сработали, как?

bigor

В basic было так doc.Text.String
Поддержать наш форум можно здесь