Python中的os.system()和subprocess.Popen()杀死转义序列

Python中的os.system()和subprocess.Popen()杀死转义序列,python,tmux,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()发出时-也可能是其他命令,我只测试了这两个命令-escape squence不能进入shell。I记录发送到文件的命令和

我使用libtmux,libtmux使用subprocess.Popen()调用Tmux来控制会话、窗口和窗格。要设置窗格,Tmux需要发送转义序列。这在命令行上正常工作:

tmux send-keys -t 0 " printf '\033]2;%s\033\\' 'Pane Title'" C-m
当这个命令是由subprocess.Popen()或os.system()发出时-也可能是其他命令,我只测试了这两个命令-escape squence不能进入shell。I记录发送到文件的命令和日志文件中的值是否正确,但当发送时,只有该命令仍然有效:

printf '2;%s' 'Pane Title'
我已通过执行以下命令对此进行了测试:

echo "printf '\033]2;%s\033\\' 'Pane Title'" > /tmp/setname
/tmp/setname的内容如上所示

最终使用的方法是,我将其称为via,如下所示:

 p.send_keys("printf '\033]2;%s\033\\' '" + names[i] + "'")
其中“p”是窗格对象。请看我的帖子

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

“原始前缀”是我错过的!谢谢

这项工作:

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

你能给我们看看你的python代码吗?你的转义序列中有一个输入错误:
]
而不是
[
。FWIW,我可以用
os.system
子进程
将转义序列发送到KDE konsole终端。这是我的测试代码。
导入操作系统,子进程
cmd='echo',这是\033[32mcoloured\033[0m text”';os.system(cmd);subprocess.call(cmd,shell=True)
。在Python2.6和3.6上进行了测试。@PM2Ring我想看看代码,看看OP是否使用了原始前缀(在这种情况下不能使用)@Jean-Françoisfar当然,OP的代码可能还有其他问题。因此我同意你的评论,这就是为什么我对它进行了投票。;)转义序列是正确的-它在命令行上工作,请参阅:最后使用的方法是tmux_cmd: