Führen Sie den Befehl curl in einem Python-Skript aus
Ich versuche zum ausführen der curl-Befehl innerhalb einer python-Skript.
Wenn ich es im terminal sieht es so aus:
curl -X POST -d '{"nw_src": "10.0.0.1/32", "nw_dst": "10.0.0.2/32", "nw_proto": "ICMP", "actions": "ALLOW", "priority": "10"}' http://localhost:8080/firewall/rules/0000000000000001
Ich habe gesehen, Empfehlungen zu verwenden pycurl
aber ich konnte nicht herausfinden, wie Sie für meine.
Versuchte ich mit:
subprocess.call([
'curl',
'-X',
'POST',
'-d',
flow_x,
'http://localhost:8080/firewall/rules/0000000000000001'
])
und es funktioniert, aber gibt es einen besseren Weg?
InformationsquelleAutor der Frage Kiran Vemuri | 2014-09-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie das urllib wie @roippi sagte:
InformationsquelleAutor der Antwort Uxio
Nicht!
Ich weiß, das ist die "Antwort" keiner haben will. Aber wenn etwas sich lohnt zu tun, es lohnt sich, es richtig zu machenrichtig?
Diese scheinbar wie eine gute Idee, stammt wahrscheinlich aus einem ziemlich breiten Missverständnis, dass shell-Befehle wie
curl
sind alles andere als die Programme selbst.Also, was Sie Fragen, ist "wie führe ich dieses andere Programm von meinem Programm, nur um eine mickrige kleine web-Anfrage?". Das ist verrückt, es muss einen besseren Weg, richtig?
Uxio Antwort arbeitet, sicher. Aber kaum sieht sehr Pythonicnicht wahr? Das ist eine Menge Arbeit nur für eine kleine Anfrage. Python soll es um Fliegen! Jemand schreiben, wahrscheinlich wollen Sie nur
call
'dcurl
!Ja, es ist einen besseren Weg!
Anforderungen: - HTTP für Humans
Let ' s GET diese Seite:
Das ist es wirklich! Sie haben dann die raw -
res.text
oderres.json()
Ausgabe, dieres.headers
usw.Können Sie sehen die docs (oben verlinkten) für die details der Einstellung aller Optionen, da Stell ich OP wurde verschoben, auf jetzt, und Sie - die Leser-jetzt - müssen wahrscheinlich verschiedene.
Aber, zum Beispiel, ist es so einfach wie:
Können Sie sogar ein nettes Python-dict zur Versorgung der query-string einer GET-Anfrage mit
params={}
.Einfach und elegant. Halten Sie ruhig und Fliegen auf.
InformationsquelleAutor der Antwort OJFord
Wenn Sie nicht optimieren Sie den curl-Befehl, zu viel kann man auch gehen und rufen Sie den curl-Befehl direkt
InformationsquelleAutor der Antwort hyades
Neuformulierung der Antworten in diesem post, anstelle von cmd.split(). Versuchen Sie, zu verwenden:
Dann füttern args zu Teilprozess.Popen.
Überprüfen Sie das Dokument für mehr info: https://docs.python.org/2/library/subprocess.html#popen-constructor
InformationsquelleAutor der Antwort Ganesh prasad