【发布时间】:2012-11-22 13:57:20
【问题描述】:
我正在Linux下编写一个小Python脚本,弹出多个libnotify弹窗,目前使用如下语法:
import os
os.execv('/usr/bin/notify-send', ['App Title', 'Message'])
不幸的是,由于某种奇怪的原因,它直接将解释器杀死到命令提示符处。
它不会对脚本执行的任何其他命令执行此操作,只需 notify-send。
没有给出错误,没有抛出已知异常,没有任何错误迹象,它只是在命令提示符下消失。
有没有人有同样容易做到的建议或替代方案?
【问题讨论】:
-
为什么不使用 os.system()?
-
因为那时我必须弄清楚如何管理所有适当的双引号和单引号,以及转义任何嵌入的引号。这样,参数已经很好地封装了。
-
您可以将它们放入变量中并将它们连接起来,然后将其用作对 os.system() 的调用。
-
这不是问题。如果我使用的字符串之一包含双引号怎么办?我将不得不以某种方式逃避它,可能使用两个反斜杠。不过,我宁愿不必这样做。这种方法意味着参数实际上是逐字传递的,我和它之间没有字符串解析。