Импорт текстов в базу из массива файлов doc и docx

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Re: Импорт текстов в базу из массива файлов doc и docx

Сообщение jsa » 30.07.2024 15:00:21

RRYTY писал(а):Кто ж его знает. Но вот так сработало.

Такой вариант ошибку не выдает но и файл не создает.

Добавлено спустя 3 минуты 43 секунды:
В общем и на своей рабочей машине воспроизвел ситуацию и с ошибкой, и без нее.
С установленным LO (не портабл)
Не понимаю как можно ее решить.

1. Рабочее место у меня Win8.1 на VirtualBox
2. диск D: на котором расположен и тестовый файл, и папка для выходных файлов является подключение сетевого диска с машины VBOXSVR т.е. это папка проброшенная из хостовой ОС LinuxMint в гостевую Win8.1
3. отличия в том, что в свойствах этой папки НЕТ закладок Доступ и Безопасность. И с папками на этом диске всё работает, ошибки нет.
4. когда я выходную папку помещаю на обычный диск например t:\tmp то там возникает такая ошибка.
5. я в Безопасности даю папке tmp всем пользователям скопом все полные права. Но это ни на что не влияет.
6. но если я возвращаю выход файла на D:\tmp (проброс с линукса) то там все работает.

7. ИТОГО дело все таки в правах записи в папку.
Но вот почему ни одни права на запись не срабатывают НЕПОНЯТНО
jsa
постоялец
 
Сообщения: 282
Зарегистрирован: 28.11.2017 13:46:04

Re: Импорт текстов в базу из массива файлов doc и docx

Сообщение WAYFARER » 30.07.2024 20:12:05

jsa, а если попробовать указывать путь с указанием схемы (как в RFC 8089)?
Типа "file:///c:/path/to/file" ?

Еще как вариант запускать вот так:
CD C:\tmp
"C:Program FilesLibreOfficeprogramsoffice" --headless --convert-to txt:TEXT "123.docx"

Добавлено спустя 5 минут 16 секунд:
jsa писал(а):диск D: на котором расположен и тестовый файл, и папка для выходных файлов является подключение сетевого диска с машины VBOXSVR т.е. это папка проброшенная из хостовой ОС LinuxMint в гостевую Win8.1

С этого и надо было начинать. не увидел сразу последнее сообщение и видимо не правильно понял проблему. В хост системе права проверить надо в первую очередь.

Если что еще есть опция --outdir которая позволяет указать другой каталог для выходного файла.
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 537
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Импорт текстов в базу из массива файлов doc и docx

Сообщение jsa » 31.07.2024 07:12:34

WAYFARER писал(а):а если попробовать указывать путь с указанием схемы (как в RFC 8089)?
Типа "file:///c:/path/to/file" ?

Еще как вариант запускать вот так:
CD C:tmp
"C:Program FilesLibreOfficeprogramsoffice" --headless --convert-to txt:TEXT "123.docx"


Оба варианта выдают ошибку
Код: Выделить всё
"C:Program FilesLibreOfficeprogramsoffice" --headless --convert-to txt:TEXT "file:///t:/tmp3/123.docx"
-----
t:
cd t:tmp3
"C:Program FilesLibreOfficeprogramsoffice" --headless --convert-to txt:TEXT "123.docx"


Добавлено спустя 6 минут 50 секунд:
WAYFARER писал(а):С этого и надо было начинать. не увидел сразу последнее сообщение и видимо не правильно понял проблему. В хост системе права проверить надо в первую очередь.

Хост Linux Mint на папке владелец я и группа моя. Права rwx всем.
Что тут можно проверить? Эта папка проброшенна в гостевую ОС. Подключена к винде как диск D: и с ней то никаких проблем.
Проблемы с файлами именно на "родных дисках".

WAYFARER писал(а):Если что еще есть опция --outdir которая позволяет указать другой каталог для выходного файла.

Это да.
НО, на целевых машинах нет такой папки с хостовой ОСи куда можно было бы конвертировать файлы.
А разобраться какие дать права в винде не получается. Выдал их всем полные на всех пользователей и группы какие предложила винда. Толку нет.

Добавлено спустя 5 часов 56 минут 53 секунды:
ИТОГ

Перепробовали разное.
В итоге папку выгрузки сделали в C:\Users\...\Desktop\tmp\
И вроде как заработало.
Но это у одного пользователя.

У меня НЕ заработало. Тогда я добавил в свою программу создание пустых файлов .txt и .html в папку выгрузки
Заработало.
НО
Файл html заполняется и при этом даже создаются файлы картинок рядом.
А файл txt остается пустым, хотя try except ошибку не сохраняет.

Стал докапываться до разных мелочей и обнаружил, что в хотя примерах встречается параметр --convert-to txt:TEXT
но в --help указан параметр --convert-to txt:Text
И о чудо. И файл txt стал заполняться и конвертация стала происходить в любую папку.

КАК ТАК?????
Как так можно написать программу, что при наличии обработки ошибок ЛОфис указывает совершенно на другую причину!!!!
Блин 2 дня котэ под хвост, потому что кому то лень проверить входной параметр на соответствие.

Причем с --convert-to html:HTML нет таких проблем, в dот если написать --convert-to html:html то будет та же ошибка невозможности создать файл, с намеком на отсутствие доступа.
jsa
постоялец
 
Сообщения: 282
Зарегистрирован: 28.11.2017 13:46:04

Re: Импорт текстов в базу из массива файлов doc и docx

Сообщение sts » 31.07.2024 13:51:19

он же написал - проверьте параметры
а так типичная проблема юниксвейнутых программ - регистрозависимость
sts
постоялец
 
Сообщения: 431
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

Re: Импорт текстов в базу из массива файлов doc и docx

Сообщение WAYFARER » 31.07.2024 16:57:52

Забавно) Я даже внимания не обратил.
Но и текст ошибки как бы не очень информативен.
Справка, кстати, не полная, и на сайте справка не очень
--convert-to OutputFileExtension[:OutputFilterName]
[--outdir output_dir] [--convert-images-to]
Batch convert files (implies --headless). If --outdir
isn't specified, then current working directory is used
as output_dir. If --convert-images-to is given, its
parameter is taken as the target filter format for *all*
images written to the output format. If --convert-to is
used more than once, the last value of
OutputFileExtension[:OutputFilterName] is effective. If
--outdir is used more than once, only its last value is
effective. For example:
--convert-to pdf *.odt
--convert-to epub *.doc
--convert-to pdf:writer_pdf_Export --outdir /home/user *.doc
--convert-to "html:XHTML Writer File:UTF8"
--convert-images-to "jpg" *.doc
--convert-to "txt:Text (encoded):UTF8" *.doc


Список фильтров (:OutputFilterName) есть вот здесь https://cgit.freedesktop.org/libreoffic ... ts/filters
<node oor:name="Text" oor:op="replace">


Добавлено спустя 21 минуту 50 секунд:
sts писал(а):а так типичная проблема юниксвейнутых программ - регистрозависимость

тут скорее проблема в том, что в отличии от паскаля Си-образные языки чувствительны к регистру. В данном случае это Java.
Но что мешало разработчикам кинуть нормальную осмысленную ошибку, например unknown format - TEXT или filter not found? Сколько человеко-часов и нервов это бы сэкономило)))
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 537
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Импорт текстов в базу из массива файлов doc и docx

Сообщение sts » 01.08.2024 11:56:25

WAYFARER писал(а):Но что мешало разработчикам кинуть нормальную осмысленную ошибку, например unknown format - TEXT или filter not found? Сколько человеко-часов и нервов это бы сэкономило)))

тут как с тестами, делать осмысленную обработку ошибок дороже чем сам код. очень не хватает выразительности языков, теже исключения - попытка решить часть проблем. например код с осмысленной обработкой ошибок втрое больше чем простой, при этом целевая логика кода размывается кодом обработки ошибок и становится не читаемым, чтоб решить это, код разбивают на две части, в первой както компактно сохраняют причину ошибки а во второй формируют текст, но для осмысленного текста нужна сопутствующая информация из первого которая уже в чистом виде недоступна, приходится ее грязно сохранять, а так как это непросто линейный код а както обобщенный в функции то происходит протечка абстракций и т.п., получается конкретная такая лапша, по этому проще сказать проверьте параметры.
sts
постоялец
 
Сообщения: 431
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

Пред.

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru