一个Python脚本为另一个python脚本提供"用户输入"

Jum*_*cat 3 python automation input python-2.x

这是我的第一个问题,我希望我做得对.假设我有这些文件:

"simple.py":

a=raw_input("your name?")
print "Hello",a
Run Code Online (Sandbox Code Playgroud)

但是使用不同的脚本,我想多次执行"simple.py"并自动输入,这样就可以了:

"everyone.py"

run simple.py input=Alice
run simple.py input=Bob
...
Run Code Online (Sandbox Code Playgroud)

得到"你好爱丽丝""你好鲍勃"......

我知道可以通过使用os.system使"everyone.py"运行"simple.py",但是有什么实际的方法可以做这样的事情吗?如果第一个脚本多次请求输入怎么办?

重要的是我不能编辑SIMPLE.PY,只能编辑其他文件

提前致谢 :)

use*_*ica 9

对于一个简单的案例simple.py,您应该能够使用subprocess.Popen:

import subprocess

child = subprocess.Popen(['python', 'simple.py'], stdin=subprocess.PIPE)
child.communicate('Alice')
Run Code Online (Sandbox Code Playgroud)

对于更复杂的情况,Pexpect模块可能很有用.它通过提供更方便,更健壮的接口来发送输入,等待提示和读取输出,从而有助于自动化与常规交互式程序的交互.它应该适用于Popen不起作用或更烦人的情况.

import pexpect

child = pexpect.spawn('python simple.py')
child.expect("your name?")
child.sendline('Alice')
Run Code Online (Sandbox Code Playgroud)