Ich möchte die Funktionalität replizieren, die passiert, wenn Sie etwas wie "git commit" tun. Es öffnet Ihren Editor und Sie tippen etwas ein und speichern/beenden, um diese Datei an das Skript zurück zu senden, das den Editor gestartet hat.Öffnen von vi aus Python
Wie würde ich diese Funktionalität in Python implementieren?
EDIT:
Danke für die Vorschläge, hier ist ein funktionierendes Beispiel auf der Antwort basiert:
import os, subprocess, tempfile
(fd, path) = tempfile.mkstemp()
fp = os.fdopen(fd, 'w')
fp.write('default')
fp.close()
editor = os.getenv('EDITOR', 'vi')
print(editor, path)
subprocess.call('%s %s' % (editor, path), shell=True)
with open(path, 'r') as f:
print(f.read())
os.unlink(path)
Sie können den Rückgabecode der Subprocess.call überprüfen, um sicherzustellen, dass der Benutzer den Prozess nicht beendet hat. 'returncode = subprocess.call (cmd, shell = True)' gefolgt von der Überprüfung, ob es == 0 ist –
Ich bekomme 'AttributeError: 'int' Objekt hat kein Attribut 'write'' in Zeile' f.write (' default ') '. Eine bessere Verwendung von 'tempfile.mkstemp' scheint dort zu sein: https://www.logilab.org/bloggentry/17873 –