我想创建一个运行OpenOffice并使用Py-Uno创建odt文件的python脚本。
这就是我的尝试:
import os
import uno
os.system("soffice '--accept=socket,host=localhost,port=2002;urp;'")
local = uno.getComponentContext()
resolver = local.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", local)
context = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
desktop = context.ServiceManager.createInstanceWithContext("com.sun.star.frame.Desktop", context)
#Start new document
document = desktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, ())
cursor = document.Text.createTextCursor()
#Insert text
document.Text.insertString(cursor, "This text is being added to openoffice using python and uno package.", 0)
document.Text.insertString(cursor, "\n\nThis is a new paragraph.", 0)
当我运行此脚本时,OpenOffice会打开,但它不会创建新文件。 似乎在os.system正在运行时,脚本的其余部分不会被执行。我能做些什么才能让它发挥作用? 谢谢你的帮助!
答案 0 :(得分:2)
您应该使用subprocess
模块:
import subprocess
subprocess.Popen(["soffice","'--accept=socket,host=localhost,port=2002;urp;'"])
os.system
将等待新进程终止。使用Popen而不重定向过程'stdout
它将在后台执行。