p = Popen(["curl", "http://localhost:8983/solr/update/json?commit=true", "--data-binary", "@solrData.json", "-H", "Content-type:application/json"], cwd=r"C:/Users/SOLR/docs", shell=True)
これは私が現在使用しているコードで、curl が認識されないというエラーが表示されます。solrData.json ファイルがある同じディレクトリでコマンドを実行すると:
curl "http://localhost:8983/solr/update/json?commit=true" --data-binary @solrData.json -H "Content-type:application/json"
それは完璧に動作します。カールはシステムパスにあり、すべてが機能します。また、比較として、これはうまく機能します:
p = Popen("java -jar post.jar solrData.xml", cwd=r"C:/Users/SOLR/docs")
編集
import requests
# open the file to upload
with open('C:/Users/SOLR/docs/solrData.json', 'rb') as fin:
# execute the post request
headers = {'Content-type': 'application/json'}
r = requests.post("http://localhost:8983/solr/update/json", params=dict(commit="true"), headers=headers, data=fin.read())
これが機能するソリューションです。zmo と Martijn Pieters の助けに感謝します。