Give input to a python script from a shell?
18,883
Solution 1
Do you mean something like:
python hello.py <<EOF
Matt
EOF
This is known as a bash HERE document.
Solution 2
There's really no better way to give raw input than sys.stdin
. It's cross platform too.
import sys
print "Hello {0}!".format(sys.stdin.read())
Then
echo "John" | python hello.py # From the shell
python hello.py < john.txt # From a file, maybe containing "John"
Author by
kip_price
Oberlin College CS student and preemptive procrastinator.
Updated on August 12, 2022Comments
-
kip_price over 1 year
I'm trying to write a shell script that will run a python file that takes in some raw input. The python script is essentially along the lines of:
def main(): name=raw_input("What's your name?") print "Hello, "+name main()
I want the shell script to run the script and automatically feed input into it. I've seen plenty of ways to get shell input from what a python function returns, or how to run a shell from python with input, but not this way around. Basically, I just want something that does:
python hello.py # give the python script some input here # then continue on with the shell script.
-
mgilson about 11 yearsthe second one is a useless use of cat ...
python hello.py < john.txt
-
Fredrick Brennan about 11 years@mgilson Indeed...old habits die hard.
-
mgilson about 11 yearsI still do that (pretty frequently).
-
kip_price about 11 yearsI can't actually change the python files: I'm grading for an intro CS class, and they aren't teaching
sys
. I'm just trying to save myself time so I'm not giving manually input to 94 students' python scripts.