首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python子流程而不是os.system

使用Python子流程而不是os.system
EN

Stack Overflow用户
提问于 2011-06-11 01:41:27
回答 2查看 1.6K关注 0票数 1

按照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文档,也看过这里,但我还是搞不懂!

顺便说一下,titletext是来自emesene messengers通知系统的变量。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-11 02:14:50

当您使用列表传递命令时,您不希望使用"shell=True“。我只会这样评论Jeremy Banks的帖子(因为他在shlex.split上的声明是最值得注意的),但我目前没有这样做的代表:/

代码语言:javascript
复制
subprocess.call(['/usr/local/bin/growlnotify', '-n',  'emesene', '-a', 'emesene', '-t', title, '-m', text])
票数 4
EN

Stack Overflow用户

发布于 2011-06-11 01:44:34

而不是

代码语言:javascript
复制
subprocess.call(['/usr/local/bin/growlnotify', '-n emesene', '-a emesene', '-t ""+title+"""', '-m """+text+"""""'], shell=True)

使用

代码语言:javascript
复制
subprocess.call(['/usr/local/bin/growlnotify', '-n',  'emesene', '-a', 'emesene', '-t', title, '-m', text], shell=True)

只要shell命令中有未加引号的空格,就拆分另一个列表项。

shlex.split函数可用于将外壳样式命令转换为排序子进程所需的列表。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6310114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档