2013-08-07 40 views
3

我明白了,我们就可以使用子如何使用Python运行短键?

import subprocess 
    subprocess.call(["ls", "-l"]) 

执行的Linux Shell命令,如果我要运行CTRL +ç终端动作?

我的使用情况是:

1> Open a linux screen 
    2> Run a command over first window 
    3> Then create a window in the same screen 
    4> Run another command over the second window 

这是很明显的,我想我的自动化,日常的一些部分。

+1

我不知道这是否可以通过一个shell脚本来完成,你可能会更好过寻找在Python模块,你可以用它来调用键击,然后你就会调用值“^c'其中^ = CTRL,%= ALT,我很久没有做过了,但是其他特殊字符钥匙也 – pythonian29033

+0

你可以看看[os.kill](http://docs.python.org/3/library/os.html)和[signals](http://docs.python.org/3/ library/signal.html)。查找pid是另一回事,但无论如何,您需要一种方法来确定您要关闭的命令。 – 2013-08-07 10:51:03

回答

0

啊!找到了解决方案;

,如果你使用Ubuntu或原路返回(一个基于Debian Linux的味道) 那么你可以安装这个:apt-get install xautomation

,并调用按键与此相对容易一些,谁喜欢在英文编码的人,但是略多复杂:

from subprocess import Popen, PIPE 

control_f4_sequence = '''keydown Control_L 
key F4 
keyup Control_L 
''' 

shift_a_sequence = '''keydown Shift_L 
key A 
keyup Shift_L 
''' 

def keypress(sequence): 
    p = Popen(['xte'], stdin=PIPE) 
    p.communicate(input=sequence) 

keypress(shift_a_sequence) 
keypress(control_f4_sequence) 
+1

这似乎是可行的。特别是为了实现我的用例,创建一个屏幕并将命令传递给它。例如,我们想模仿在xc会话中按Ctrl + C,我们可以运行屏幕-x xc -X eval“stuff \\ 003”。键入一个单词,然后按回车键将显示-X -S xc eval“stuff Hello \\ 012”。这非常巧妙地使我的任务自动化。 [链接](http://www.gnu.org/software/screen/manual/screen.html#Paste) – innosam

+0

是啊,我和我的单身兄弟让人超级恐惧的安排脚本,只会做随机的事情,人们会去在公用计算机实验室和尖叫声中,“有人在窃听这台计算机!” lmfu – pythonian29033