私はAPIを呼び出し、POSTリクエストが通過した場合に基づいて0または99を返すpowershellスクリプトを使用しました。私のPowerShellのコード:Pythonのpopen waitコマンドが期待通りに動作しない
try
{
Invoke-RestMethod -uri $url -Method Post -Body $body -ContentType 'application/json' -ErrorAction Stop
return 0
}
catch
{
return 99
}
これは私が私のPythonスクリプトからスクリプトを呼んでいる方法です:
req = subprocess.Popen([r'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe',
'-ExecutionPolicy',
'Unrestricted',
'./call.ps1',
param1, param2], cwd=os.getcwd())
print("^^^^^^^")
result = req.wait() #something is going wrong here
print("****************")
print(result)
if result == 0:
# do something
else:
# do something else
そのが間違ってどこさて、これはPOSTリクエストが失敗した場合であっても...です"result"変数には "0"があり、 "99"ではありません。 PowerShellスクリプトを別々に実行すると、POST要求が失敗したときに99が返されることがわかります。だから、問題はPowerShellファイルではないようです。
のpythonファイルをデバッグするには、これは私がコンソールに表示されるものである:私は理解していないこと(Pythonコードでprint文の順序に注意してください)
^^^^^^^
99
****************
0
ことの一つは、「何であるか..です99 "で出力していますか?私は "^^^^^"と "*****"の間に結果を印刷していません。 powershellスクリプトが99を返す場合、なぜ "*****"の後に0に変わるのでしょうか?
私は本当にここで失われています。助けてください。
この詳細な説明、Ansgarありがとうございます。今、私のファイルは完全に期待通りに動いています。私は正直言ってこれを私自身で理解することはできませんでした。もう一度、ありがとうございます:) – 90abyss