Ошибка подключения к Python3 unotools

Я искал ответ, но пока ничего не помогло. У меня есть метод, который я хочу использовать, чтобы создать файл odt и заполнить его текстом. Я также хочу, чтобы пользователь просматривал файл при его создании. Я использую python 3.4.3 unotools 0.3.3 LinuxMint 17.1 LibreOffice 4.2.8.2

Проблема:

unotools.errors.ConnectionError: failed to connect: ('socket,host=localhost,port=8100', {})

Образец unotools работал нормально из терминала - создал и сохранил sample.odt без ошибок. Мой черновик кода:

def writer_report(self):
    subprocess.Popen(["soffice", "--accept='socket,host=localhost,port=8100;urp;StarOffice.Service'"])
    time.sleep(5)  # using this to give time for LibreOffice to open - temporary
    context = connect(Socket('localhost', '8100'))
    writer = Writer(context)
    writer.set_string_to_end('world\n')
    writer.set_string_to_start('hello\n')
    writer.store_to_url('output.odt','FilterName','writer8')
    writer.close(True)

Приложение LibreOffice открывается и остается открытым. Тем не менее, связь, кажется, потеряна.
Я надеюсь, что кто-то может оказать мне помощь, спасибо.

2 ответа

Спасибо за совет. Я хотел запустить подпроцесс. Я пытался продлить время, но все еще не радости.
Сейчас я смотрю на использование пакета Python odfpy 1.3.3, который после того, как я начал использовать в течение дня или двух, у меня уже есть больший успех.

Я не рекомендую такой код:

subprocess.Popen(...)
time.sleep(...)

Для запуска лучше использовать скрипт оболочки soffice а затем вызвать скрипт Python.

Однако, если вы решили запустить soffice в подпроцессе я рекомендую увеличить время ожидания как минимум до 15 секунд.

См. https://forum.openoffice.org/en/forum/viewtopic.php?t=1014.

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