3

Pythonスクリプトを実行するバッチファイルがあります。Python3.2を実行しています。整数や文字列などの変数をPythonスクリプトからバッチファイルに送り返したいのですが、これは可能ですか?

Pythonスクリプトで。を使用してコマンドライン引数を受け入れることができることはわかっていsys.argvます。私が逆を行うことを可能にするいくつかの機能があることを望んでいました。

4

5 に答える 5

14

Pythonスクリプトで、標準出力に書き込むだけです。sys.stdout.write(...)

使用しているスクリプト言語がわかりません。詳しく説明していただけますか。今のところ、bash(unixシェル)を使用していると仮定します。したがって、バッチスクリプトでは、Pythonスクリプトの出力を次のような変数に含めることができます。

#run the script and store the output into $val
val = `python your_python_script.py`
#print $val
echo $val

編集してください、それはWindowsバッチです

python your_python_script.py > tmpFile 
set /p myvar= < tmpFile 
del tmpFile 
echo %myvar%
于 2012-05-30T17:41:16.530 に答える
5

aintで十分な場合は、次を使用できます

sys.exit(value)

Pythonスクリプトで。これにより、ステータスコードが次のようにアプリケーションが終了します。value

%errorlevel%バッチファイルで、環境変数として読み取ることができます。

于 2012-05-30T17:41:02.877 に答える
3

文字列を「送信」することはできません。印刷して呼び出しプロセスにキャプチャさせることはできますが、直接返すことができるのは0から255までの番号のみです。

于 2012-05-30T17:37:04.057 に答える
1

イグナシオは死んでいる。返すことができるのは、終了ステータスだけです。私が以前に行ったことは、Pythonスクリプト(または私の場合はEXE)に実行する次のバッチファイルを出力させることです。その後、任意の値を入力して実行できます。次に、Pythonスクリプトを呼び出すバッチファイルは、作成したバッチファイルを呼び出します。

于 2012-05-30T17:39:19.603 に答える
0

例として、この問題に対してこのバッチスクリプトを試すことができます。

@echo off

REM     %1 - This is the parameter we pass with the desired return code for the Python script that will be captured by the ErrorLevel env. variable.  
REM     A value of 0 is the default exit code, meaning it has all gone well. A value greater than 0 implies an error
REM     and this value can be captured and used for any error control logic and handling within the script
   
set ERRORLEVEL=
set RETURN_CODE=%1

echo (Before Python script run) ERRORLEVEL VALUE IS: [ %ERRORLEVEL% ]
echo.

call python -c "import sys; exit_code = %RETURN_CODE%; print('(Inside python script now) Setting up exit code to ' + str(exit_code)); sys.exit(exit_code)"

echo.
echo (After Python script run) ERRORLEVEL VALUE IS: [ %ERRORLEVEL% ]
echo.

また、異なる戻りコード値を使用して数回実行すると、予想される動作を確認できます。

PS C:\Scripts\ScriptTests> & '\TestPythonReturnCodes.cmd' 5

(Before Python script run) ERRORLEVEL VALUE IS: [ 0 ]

(Inside python script now) Setting up exit code to 5

(After Python script run) ERRORLEVEL VALUE IS: [ 5 ]

PS C:\Scripts\ScriptTests> & '\TestPythonReturnCodes.cmd' 3

(Before Python script run) ERRORLEVEL VALUE IS: [ 0 ]

(Inside python script now) Setting up exit code to 3

(After Python script run) ERRORLEVEL VALUE IS: [ 3 ]

PS C:\Scripts\ScriptTests
于 2020-09-03T16:34:37.297 に答える