在命令行中运行Python文件,输入内容,等待后再输入内容

5 投票
2 回答
5532 浏览
提问于 2025-04-17 06:24

在Python中,我想做以下事情:

我有一个命令行程序,需要用户一步一步输入内容,并在每一步之间等待结果。现在,我想用Python来自动化这个过程。

这个过程大概是这样的:

  • 在命令行中运行 myProgram.exe
  • 输入命令1
  • 等待命令1运行并完成(大约需要5分钟)
  • 输入命令2
  • ...

有没有办法在Python中模拟这个过程?我知道我们可以用 os.open() 或 subprocess 来运行一个程序并传入命令行参数。但这些方法都是一次性的。

谢谢

2 个回答

2

在Unix系统上,或者在Windows上使用cygwin的python时,pexpect模块可以用来自动化一些需要互动的程序。

你可以查看这里的例子。对于那个需要五分钟的部分,你可能需要给expect()函数传一个比默认值更长的timeout参数。

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='

撰写回答