我有一個應用程序的安裝程序。它有.sh和.bat for * nix/windows os。 在腳本中,它會執行某些操作並掛在那裏,等待一些其他事情的完成,然後需要按在該命令窗口中輸入,腳本將繼續。按回車作爲命令輸入
我想用python做所有的事情。我知道subprocess.open可以調用腳本,但林不知道該怎麼辦了「按回車鍵」的事..
任何輸入將被appraciated ..
我有一個應用程序的安裝程序。它有.sh和.bat for * nix/windows os。 在腳本中,它會執行某些操作並掛在那裏,等待一些其他事情的完成,然後需要按在該命令窗口中輸入,腳本將繼續。按回車作爲命令輸入
我想用python做所有的事情。我知道subprocess.open可以調用腳本,但林不知道該怎麼辦了「按回車鍵」的事..
任何輸入將被appraciated ..
您需要在安裝程序的標準輸入提供一個換行符。
方式一:
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')
一種方法是使用是使用raw_input
方法!
# Code
print "Please press ENTER to continue!"
raw_input()
# more code
感謝您的回覆Aneesh。但我想要做的是自動化安裝工具,它會自動完成所有的事情。反正有沒有人蔘與操作? – Luke 2013-03-26 14:14:36
準確地說,您是如何調用安裝程序的? – 2013-03-26 14:58:19
我正在嘗試使用「subprocess.Popen('sh abc.sh',shell = True,stdout = subprocess.PIPE)」。並且我不知道下一步按Enter鍵可以做什麼.. – Luke 2013-03-26 15:08:49
由pExpect實施..感謝所有人.. – Luke 2013-04-23 08:52:36