I'm a little unsure why you would want to do this. Can I suggest an entirely pythonic approach using threading and queues:
import threading
from queue import Queue
import time
def worker(q):
"""thread worker function"""
running = True
while running:
message = q.get()
print('Worker received message: {}'.format(message))
if message == 'KILL':
running = False
print('Worker completed')
if __name__ == '__main__':
q = Queue()
worker = threading.Thread(target=worker, args=(q,))
worker.start()
running = True
while running:
user_input = input('Input some data: ')
q.put(user_input)
if user_input == 'KILL':
running = False
time.sleep(0.5)
print('Program terminated')
You now have the ability to send commands to another python script from a console. The worker can do whatever you wish now. For a more detailed example see this post
Alternatively if thats not acceptable, what you are trying to do is 'PIPE' data from a command line in both directions. Have a look at this post where they do:
proc = subprocess.Popen(['some_cmd', '--command_line_parameters'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = proc.communicate()