[解決済み] Pythonスクリプトでcurlコマンドを実行する
質問
Pythonスクリプトの中でcurlコマンドを実行しようとしています。
ターミナルでやると、こんな感じです。
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
を使うことを推奨しているのを見たことがあります。
pycurl
を使うことを推奨しているのを見ましたが、私のものに適用する方法が分かりませんでした。
を使ってみました。
subprocess.call([
'curl',
'-X',
'POST',
'-d',
flow_x,
'http://localhost:8080/firewall/rules/0000000000000001'
])
で、うまくいくのですが、もっといい方法はないでしょうか?
どのように解決するのですか?
やめてください
誰も望んでいない答えなのは分かっています。しかし、もし何かやる価値があるのなら それは正しく行う価値があります。 ですよね?
この良いアイデアのように見えるのは、おそらく、以下のようなシェルコマンドがかなり広く誤解されていることに起因しています。
curl
などのシェルコマンドは、プログラムそのもの以外の何ものでもないという、かなり広い誤解からきているのでしょう。
つまり、あなたが求めているのは、「自分のプログラムの中から、ほんのちょっとのWebリクエストをするために、どうやって他のプログラムを実行すればいいのか?それはおかしい、もっと良い方法があるはずでしょう?
Uxioの回答
は確かに機能します。しかし、それはほとんど非常に
Pythonic
には見えませんよね?一つの小さな要求のために多くの作業をしなければならないのです。Pythonは本来
フライング
! これを書いている人は、おそらく、ただ
call
'd
curl
!
うまくいくのですが、もっといい方法はないでしょうか?
はい、あります。 はあります。 より良い方法があります!
リクエスト HTTP for Humans
<ブロッククオート物事はこのようにあるべきではありません。Pythonではありません。
このページをGETしてみましょう。
import requests
res = requests.get('https://stackoverflow.com/questions/26000336')
これで終わりです。次に、生の
res.text
または
res.json()
の出力では
res.headers
など。
すべてのオプションの設定の詳細については、docs (上記リンク) を参照してください。
しかし、たとえば、次のように簡単です。
url = 'http://example.tld'
payload = { 'key' : 'val' }
headers = {}
res = requests.post(url, data=payload, headers=headers)
GET リクエストのクエリ文字列を指定するために、Python の素敵なディクショナリーを使うこともできます。
params={}
.
シンプルでエレガント。落ち着いて、飛び続けましょう。
関連
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] Pythonで辞書に新しいキーを追加するにはどうすればよいですか?
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み] cURL呼び出しによるHTTPリクエストを使用してヘッダーを送信する方法は?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] Djangoで2つの日付の間を選択する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Pythonの構文に新しいステートメントを追加することはできますか?
-
[解決済み] バブルソートの宿題
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] Ctrl-CでPythonスクリプトを終了できない
-
[解決済み] CSVデータを処理する際、1行目のデータを無視する方法を教えてください。
-
[解決済み] djangoフレームワークでフォームフィールドから値を取得するには?
-
[解決済み] PySparkでデータフレームのカラムをString型からDouble型に変更する方法は?
-
[解決済み] Python 言語を決定するには?
-
[解決済み] Python の sorted() はどのようなアルゴリズムを使っているのですか?重複