Python script to Batch file

13,659

Solution 1

You can't "send" a string. You can print it out and have the calling process capture it, but you can only directly return numbers from 0 through 255.

Solution 2

In your Python script, just write to standard out: sys.stdout.write(...)

I'm not sure what scripting language you are using, maybe you could elaborate on that, for now I'll assume you are using bash (unix shell). So, In your batch script you can have the output of the python script into a variable like this:

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

EDIT it turns out, it is Windows batch

python your_python_script.py > tmpFile 
set /p myvar= < tmpFile 
del tmpFile 
echo %myvar%

Solution 3

If a int is enough for you, then you can use

sys.exit(value)

in your python script. That exits the application with a status code of value

In your batch file you can then read it as the %errorlevel% environment variable.

Solution 4

Ignacio is dead on. The only thing you can return is your exit status. What I've done previously is have the python script (or EXE in my case) output the next batch file to be run, then you can put in whatever values you'd like and run it. The batch file that calls the python script then calls the batch file you create.

Share:
13,659
dawnoflife
Author by

dawnoflife

Updated on June 26, 2022

Comments

  • dawnoflife
    dawnoflife almost 2 years

    I have a batch file that runs a python script. I am running Python 3.2. I want to send a variable like an integer or string from the python script back to the batch file, is this possible?

    I know I can accept command line arguments in the Python script with sys.argv. Was hoping there was some feature that allows me to do the reverse.