Как создать новый вид файла в Kate с помощью Python/Pâté?
Я работаю над плагином Kate, написанным на Python, который генерирует большой объем текста, слишком большой, чтобы отобразить его во всплывающем окне. Поэтому я хочу, чтобы Кейт открыла новый безымянный файл и отобразила в нем текст.
Есть ли способ сделать это в Python (кроме запуска подпроцесса echo text | kate --stdin
)?
2 ответа
Решение
Я узнал это сам:
import kate
from kate import documentManager as dm
from PyKDE4.kdecore import KUrl
text = "Lorem ipsum dolor sit amet"
# Open a new empty document
doc = dm.openUrl(KUrl())
# Open an existing file
doc = dm.openUrl(KUrl('/path/to/file.ext'))
# Activate view
kate.application.activeMainWindow().activateView(doc)
# Insert text
pos = kate.activeView().cursorPosition()
doc.insertText(pos, text)
Вы можете напрямую использовать трубу:
>>> f = os.popen("kate --stdin", "w")
>>> f.write("toto")
>>> f.close()
Теперь Кейт откроет файл с "toto" в нем.
Более современным решением является использование subprocess
модуль:
>>> sp = subprocess.Popen(["/usr/bin/kate", "--stdin"], stdin=subprocess.PIPE, shell=False)
>>> sp.stdin.write("toto")
>>> sp.stdin.close()
Как указано в команде, он не использует оболочку.