通常、コマンドラインで渡されるキーと値のペアでは、2番目ではなく最初 =
のペアで分割します。だから、これを行います:
r = requests.post("http://httpbin.org/get", params={'arg1': 'val1', 'setting': 'DOWNLOAD_DELAY=2'})
たとえば、プログラム引数の構文規則に関するGNUドキュメントでは次のようになります。
長いオプションは、「-」の後に英数字とダッシュで構成される名前が続きます。オプション名は通常、1〜3語の長さで、単語を区切るハイフンが付いています。省略形が一意である限り、ユーザーはオプション名を省略できます。
longオプションの引数を指定するには、「-name=value」と記述します。この構文により、長いオプションは、それ自体がオプションである引数を受け入れることができます。
つまり、--foo=bar=baz
はfoo
英数字またはダッシュではないため、name
はbar=baz
、、はです。value
=
同様に、およびを値として使用しcurl
てオプション-d foo=bar=baz
を処理します。foo
name
bar=baz
それをどの仕様からも直接推測することはできません。実際、curl
GNUプログラムではなく、(IIRC)が独自のカスタム引数解析を行うため、GNU引数構文に従うことを直接推測することさえできません。したがって、絶対に確実にするためにソースを読む必要があります。
または、もっと簡単に、それをテストします。送信するフォームエンコードされたリクエストをキャプチャしcurl
ます。(その方法がわからない場合はnetcat
、たとえばnc -kl 8888
Mac / BSDシステムで偽のサーバーを実行してみcurl http://localhost:8888/schedule.json -d project=myproject -d spider=somespider -d setting=DOWNLOAD_DELAY=2 -d arg1=val1
て、コマンドラインに何が表示されるかを確認してください。)
name=value
しかし、この種の動作は、ペアがある場合は常に暗黙の標準です。