Python os.system 内联工作但不能作为变量

Python os.system works inline but not as a variable

此函数向 EMAIL 变量中的收件人发送 google 环聊消息。

它适用于以下情况,其中内联电子邮件不带引号。

import os
EMAIL='in06khattab@gmail.com'

os.system('sudo echo "jjj" | sendxmpp -v -t in06khattab@gmail.com') #send hangouts message

但是,当我将变量插入到它的位置时,它没有发送。没有错误消息,调试似乎发送正确,但我认为它发送到 'in06khattab@gmail.com' 而不是 in06khattab@gmail.com。所以它可能包括引号,

os.system('sudo echo "jjj" | sendxmpp -v -t EMAIL') #send hangouts message

Python 不会像那样解释字符串中的变量。

使用串联:

os.system('sudo echo "jjj" | sendxmpp -v -t ' + EMAIL)

或字符串格式:

os.system('sudo echo "jjj" | sendxmpp -v -t %s' % EMAIL)

为了向前兼容性和可读性,我建议使用 format 替换 EMAIL 变量。

os.system('sudo echo "jjj" | sendxmpp -v -t {email}'.format(email=EMAIL))

参见 this thread 为什么这比 % 编码更可取