3

我正在尝试编写一个 python 脚本,它将为我执行一个 bash 命令行程序。该程序要求用户输入两次,我希望我的脚本每次都自动输入“1”。

我听说过这样的事情:

os.system("program < prepared_input")

如何编写prepared_input?谢谢。

4

3 回答 3

5

用两行创建文件:

1
1

read在 bash 脚本中使用以获取输入:

演示:

$ cat abc
1
1
$ cat so.sh
#!/bin/bash
read data
echo "You entered $data"
read data
echo "Now you entered $data"
$ bash so.sh <abc
You entered 1
Now you entered 1

Python :

>>> import os
>>> os.system("bash so.sh < abc")
You entered 1
Now you entered 1
0
于 2013-07-08T22:33:42.270 回答
1

我想让你的例子工作你需要:

prepared_input = "<input goes here>"
os.system("program < {0}".format(prepared_input))

但取决于你想做什么,几乎可以肯定有更好的方法来实现它。如果您向我们提供有关您在做什么以及为什么做的更多信息,我们或许可以提出一些替代方案。

于 2013-07-08T22:36:07.797 回答
1

使用 pexpect 将为您工作...

这是解决方案 - http://pypi.python.org/pypi/pexpect/

于 2013-07-09T06:01:39.767 回答