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 为什么这比 %
编码更可取