根据按下的键值执行shell脚本

时间:2014-11-30 16:13:49

标签: python shell keyboard-shortcuts

如何使用python基于不同的键盘事件执行不同的shell脚本(tes1.sh,test2.sh,..)。

如果用户按"1" test1.sh "2"等,请执行test2.sh

我使用“raw-input”按下了键,并根据输入值使用subprocess.call调用了“test1.sh”或“test2.sh”。

如果按下不同的键,如何停止运行当前的shell脚本并运行新脚本。

2 个答案:

答案 0 :(得分:1)

你可以在python3中使用subprocess.callraw_input()用于python2和input

import subprocess
num=raw_input('print the number : ')

if num=='1' :
   subprocess.call('test1.sh')
elif num == '2':
   subprocess.call('test2.sh')

答案 1 :(得分:0)

使用subprocess.call(根据我对python docs的了解)这里不是一个好主意,因为你想在按键后杀死(停止)该进程...使用subprocess更好.Popen在这里,因为它在运行时不会阻止与进程的交互。 Subprocess.call等待程序完成,然后返回表示进程退出状态的代码。要调用和终止进程,您可以执行以下操作:

import os
import signal
import subprocess

process = subprocess.Popen('script.sh', stdout=subprocess.PIPE, 
                   shell=False, preexec_fn=os.setsid) 

os.killpg(process.pid, signal.SIGTERM) 

我希望这会对你有所帮助,如果你不理解某些事情,请随意在评论中提问......

P.S。如果您不知道如何检查按键,请查看这部分文档:

https://docs.python.org/2/faq/library.html#how-do-i-get-a-single-keypress-at-a-time