3

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.
kip_price
  • 71
  • 1
  • 1
  • 4

2 Answers2

8

Do you mean something like:

python hello.py <<EOF
Matt
EOF

This is known as a bash HERE document.

mgilson
  • 300,191
  • 65
  • 633
  • 696
4

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"
Fredrick Brennan
  • 7,079
  • 2
  • 30
  • 61