os.system()和subprocess.Popen()杀死Python

时间:2017-03-04 09:07:59

标签: python tmux

我使用libtmux和libtmux使用subprocess.Popen()来调用Tmux来控制会话,窗口和窗格。要设置窗格标题,Tmux需要发送转义序列。这可以按预期在命令行上运行:

tmux send-keys -t 0 " printf '\033]2;%s\033\\' 'Pane Title'" C-m

当这个命令由subprocess.Popen()或os.system()发出时 - 也可能是其他命令,我只测试了这两个 - 转义序列没有进入shell。我记录发送到文件的命令,并且日志文件中的值是正确的,但只有在发送时才能存活:

printf '2;%s' 'Pane Title'

我已经通过执行此命令对此进行了测试:

echo "printf '\033]2;%s\033\\' 'Pane Title'" > /tmp/setname

/ tmp / setname的内容如上所述。

最终使用的方法是tmux_cmd,我通过send_keys这样称呼它:

 p.send_keys("printf '\033]2;%s\033\\' '" + names[i] + "'")

其中“p”是窗格对象。请参阅我的帖子here

我的问题是:如何在Python中使用转义序列发出shell命令?

1 个答案:

答案 0 :(得分:0)

"原始前缀"是我错过的!谢谢Jean-François Fabre

这有效:

p.send_keys(r"printf '\033]2;%s\033\\' '" + names[i] + "'")