在命令行中运行Python文件,输入内容,等待后再输入内容
在Python中,我想做以下事情:
我有一个命令行程序,需要用户一步一步输入内容,并在每一步之间等待结果。现在,我想用Python来自动化这个过程。
这个过程大概是这样的:
- 在命令行中运行 myProgram.exe
- 输入命令1
- 等待命令1运行并完成(大约需要5分钟)
- 输入命令2
- ...
有没有办法在Python中模拟这个过程?我知道我们可以用 os.open() 或 subprocess 来运行一个程序并传入命令行参数。但这些方法都是一次性的。
谢谢
2 个回答
3
你可以使用 subprocess 模块和 Popen.communicate()
来向进程的标准输入(stdin)发送数据。
编辑:
你说得对,他应该使用 stdin.write
来发送数据,像这样:
#!/usr/bin/env python
import subprocess
import time
print 'Launching new process...'
p = subprocess.Popen(['python', 'so1.py'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
print 'Sending "something"...'
p.stdin.write('something\n')
print 'Waiting 30s...'
time.sleep(30)
print 'Sending "done"...'
p.stdin.write('done\n')
p.communicate()
print '=o='