我试图同时传递参数运行在Python命令exe文件。 我看过一些其他的问题,为什么我的问题是不同的原因是因为我首先要调用命令提示字符程序,同时传递一些参数,然后我不得不等待10秒的exe文件,提示我要一些用户名,然后是一些密码。 那么我想这个管道输出到文件中。
那么,有没有办法通过更多的参数,如果一个进程已事先叫什么名字? 如何使一个命令提示字符保持开放,因为只要我把它的进程死亡。
谢谢
我试图同时传递参数运行在Python命令exe文件。 我看过一些其他的问题,为什么我的问题是不同的原因是因为我首先要调用命令提示字符程序,同时传递一些参数,然后我不得不等待10秒的exe文件,提示我要一些用户名,然后是一些密码。 那么我想这个管道输出到文件中。
那么,有没有办法通过更多的参数,如果一个进程已事先叫什么名字? 如何使一个命令提示字符保持开放,因为只要我把它的进程死亡。
谢谢
看看子沟通和管道的例子。
下面是一个例子(第一,我不得不创建一个花了一些时间在这个例子中,要求输入(6秒一个简单的Python应用程序)称为wait.py
wait.py
import time
print "Sample Waiting App (waiting 6 seconds)"
time.sleep(6)
name = raw_input("Enter a Name: ")
print "Hello", name
这里是开始,等待,通过输入和输出读取的代码:
automator.py
from subprocess import Popen, PIPE, STDOUT
p = Popen(['python', 'wait.py'], stdout=PIPE, stdin=PIPE, stderr=STDOUT)
print p.communicate('Jason\n')[0]
这里是一个突破是怎么回事下来:
subprocess.Popen()
创建一个进程(运行python解释和传递wait.py脚本作为参数),并分配给p
。 我原本automator.py睡眠10秒(给wait.py足够的时间来清除它的定时器),但作为@JFSebastian指出,这种睡眠是不需要的。 的原因是为了“通信()”将阻塞直到wait.py完成该呼叫。 也正因为wait.py是从标准输入读,你能填补标准输入wait.py读它之前会的内容。 这是真正的与从标准输入流中读取的任何应用程序。 'Jason\n'
经由发送到过程p.communicate('Jason\n')[0]
输出被打印。 请注意, stdout
是显示提示和wait.py print语句的输出,而不是输入,这是因为输入是不是在stdout
,当你键入它流,它被遥相呼应。