按照Ignacio ( Python remove spaces and append )的建议,我正在尝试将以下命令转换为使用subprocess而不是os.system。
脚本:os.system("/usr/local/bin/growlnotify -n emesene -a emesene -t """+title+""" -m """+text+"""""")
我会这样想:subprocess.call(['/usr/local/bin/growlnotify', '-n emesene', '-a emesene', '-t ""+title+"""', '-m """+text+"""""'], shell=True)
但是它不起作用。你有什么办法让它工作吗?我看过Python文档,也看过这里,但我还是搞不懂!
顺便说一下,title和text是来自emesene messengers通知系统的变量。
发布于 2011-06-11 02:14:50
当您使用列表传递命令时,您不希望使用"shell=True“。我只会这样评论Jeremy Banks的帖子(因为他在shlex.split上的声明是最值得注意的),但我目前没有这样做的代表:/
subprocess.call(['/usr/local/bin/growlnotify', '-n', 'emesene', '-a', 'emesene', '-t', title, '-m', text])发布于 2011-06-11 01:44:34
而不是
subprocess.call(['/usr/local/bin/growlnotify', '-n emesene', '-a emesene', '-t ""+title+"""', '-m """+text+"""""'], shell=True)使用
subprocess.call(['/usr/local/bin/growlnotify', '-n', 'emesene', '-a', 'emesene', '-t', title, '-m', text], shell=True)只要shell命令中有未加引号的空格,就拆分另一个列表项。
shlex.split函数可用于将外壳样式命令转换为排序子进程所需的列表。
https://stackoverflow.com/questions/6310114
复制相似问题