2014-02-19 134 views
2

这是我的第一个问题,我希望我这样做是正确的。 让我们说我有这些文件:一个给另一个python脚本“用户输入”的Python脚本

“simple.py”:

a=raw_input("your name?") 
print "Hello",a 

但使用不同的脚本,我想执行“simple.py”许多时间,并自动给输入,即会工作,如:

“everyone.py”

run simple.py input=Alice 
run simple.py input=Bob 
... 

获得 “你好爱丽丝” “你好鲍勃” ...

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

这是我不能编辑SIMPLE.PY,只有其他文件

感谢提前:)

+0

为什么你不能编辑'simple.py'?只是你不能改变它的行为?还是由第三方控制? – user2357112

+0

它是由第三方控制的 –

回答

1
import sys 
print "Hello",sys.argv[1] 

运行C:\Python26\python.exe simple.py Alice会产生

你好爱丽丝

很重要

有一个关于如何从系统中获取输入到Python应用程序在这里一个很好的例子:

既然你没有提到你不能修改simple.py那么你就需要全自动输入的东西raw_input()并做到这一点,最快的方法就是简单地管数据到脚本为“输入”:

C: >回声“爱丽丝”|运行simple.py

+0

哦,我的错误,我之前没有提到过,我不能编辑第一个文件,只有第二个文件,也就是第一个应该总是要求用户输入,而我希望在使用第二个脚本多次运行第一个脚本时自动执行该操作。 –

+0

如果你不能编辑第一个文件..你运气不好。也许你可以用'C:>来运行simple.py Torxed

+0

不会'运行simple.py <“Alice”'查找名为'Alice'的文件并尝试从中提取输入? – user2357112

6

对于作为simple.py简单的情况下,你应该能够使用subprocess.Popen

import subprocess 

child = subprocess.Popen(['python', 'simple.py'], stdin=subprocess.PIPE) 
child.communicate('Alice') 

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

import pexpect 

child = pexpect.spawn('python simple.py') 
child.expect("your name?") 
child.sendline('Alice') 
相关问题