关于电子邮件:Python os.system工作在内联但不作为变量

Python os.system works inline but not as a variable

此函数在email变量中向收件人发送google hangouts消息。

它适用于以下情况,即电子邮件不带引号。

1
2
3
4
import os
EMAIL='[email protected]'

os.system('sudo echo"jjj" | sendxmpp -v -t [email protected]') #send hangouts message

但是,当我在它的位置插入变量时,它不会发送。没有错误消息,调试似乎发送正确,但我认为它发送到"[email protected]"而不是[email protected]。所以它可能包括了引号,

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


python不会用这样的字符串来解释变量。

使用串联:

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

或字符串格式:

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


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

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

请参阅此线程,以了解为什么它比%编码更可取。