按enter键作为命令输入

时间:2013-03-26 14:04:06

标签: python subprocess

我有一个应用程序的安装程序。对于* nix / windows os,它有.sh和.bat。 在脚本中它会执行某些操作并挂起,等待其他一些事情要完成,然后需要在该命令窗口中按 Enter ,脚本将继续。

我想用python做所有的事情。我知道subprocess.open可以调用脚本,但我不知道怎么做“按回车”的事情..

任何输入都将被评估..

2 个答案:

答案 0 :(得分:3)

一种方法是使用{是raw_input方法!

# Code
print "Please press ENTER to continue!"
raw_input()
# more code

答案 1 :(得分:1)

您需要在安装程序的标准输入上提供换行符。

一种方式:

subprocess.Popen('sh abc.sh < a_file_that_you_prepared.txt',
                 shell=True,
                 stdout=subprocess.PIPE)

另一个,大致相当于第一个:

input_file = open('a_file_that_you_prepared.txt', 'r')
subprocess.Popen('sh abc.sh',
                 shell=True,
                 stdout=subprocess.PIPE,
                 stdin=input_file)
input_file.close()

另一种方式 - 可能有用,可能不会:

subprocess.Popen('sh abc.sh < /dev/null',
                 shell=True,
                 stdout=subprocess.PIPE)

第三种方式 - 很容易导致程序和安装程序之间的死锁:

x = subprocess.Popen('sh abc.sh',
                 shell=True,
                 stdout=subprocess.PIPE,
                 stdin=subprocess.PIPE)

...

x.stdin.write('\n')