Ошибка подключения к 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.