Fabric - Gibt es eine Möglichkeit, RunStdout zu erfassen?
Ich versuche, Folgendes zu tun:
output = run("ls -l backups")
for line in output.split("/n"):
do_stuff(line)
Irgendeiner Weise mit der stdout
von ls
geschickt output
?
Spezifischer zu sein, ich bin mit einem CLI-app namens s3cmd
die etwas ähnliches macht, um ls
aber mit remote-Amazon S3-buckets.
Also ein Ersatz für ls
wird nicht helfen, leider.
InformationsquelleAutor der Frage RadiantHex | 2014-01-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Genau das, was Sie fordern das geschehen sollte. Aus der docs:
run()
und ähnliche Befehle wielocal()
undsudo()
geben ein_AttributeString
Objekt, das ist nur ein wrapper um stdout mit Attribut-Zugriff auf zusätzliche Informationen wie Fehler - /Erfolgs-booleans, stderr, die den Befehl ausführen, usw. Das Ergebnis-Objekt hat auch einestdout
- Attribut, das ist nur expliziter.Beheben
print type(output), output
zu sein, dass die Antwort ist, was Sie erwarten. Prüfenoutput.failed
undoutput.stderr
. Es könnte sein das der Befehl nicht tut, was Sie erwarten, es gibt keine "Backup" - Verzeichnis, etc.InformationsquelleAutor der Antwort JCotton
Versuchen Sie, wie unter Verwendung von String-IO
InformationsquelleAutor der Antwort user1406490
In Fall müssen Sie mit run () kann man es so machen:
Für lokale() gibt es eine etwas einfachere Lösung:
Ich hoffe, es hilft.
InformationsquelleAutor der Antwort Evhz
Können Sie dieses auch verwenden, wenn Sie mit der
local()
api, durch die Einstellung dercapture=True
InformationsquelleAutor der Antwort pitaside
Versuchen Sie, die split mit "
\r\n
":InformationsquelleAutor der Antwort Itay Katz
Nur einfach zurück:
a Wörterbuch der Ergebnisse.
InformationsquelleAutor der Antwort Bekzot Asimov