繁体   English   中英

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

[英]os.system() and subprocess.Popen() kill escape sequences in Python

我使用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”是窗格对象。 在这里查看我的帖子。

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

我错过了“原始前缀”! 感谢Jean-FrançoisFabre

这有效:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM