使用Python子进程而不是os.system

Jos*_*ley 1 python shell subprocess os.system

遵循Ignacio的建议(Python删除空格和追加)我试图将下面的命令转换为使用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文档并查看了这里,但我无法弄明白!

BTW titletextemesene messengers通知系统的变量

小智 5

代替

subprocess.call(['/usr/local/bin/growlnotify', '-n emesene', '-a emesene', '-t ""+title+"""', '-m """+text+"""""'], shell=True)
Run Code Online (Sandbox Code Playgroud)

使用

subprocess.call(['/usr/local/bin/growlnotify', '-n',  'emesene', '-a', 'emesene', '-t', title, '-m', text], shell=True)
Run Code Online (Sandbox Code Playgroud)

在shell命令中,每个地方都有一个不带引号的空格,拆分另一个列表项.

shlex.split功能可用于从shell风格的命令转换为某种Subproces预期的列表.