【问题标题】:Python os.system works inline but not as a variablePython os.system 内联工作,但不作为变量
【发布时间】:2015-02-03 01:25:15
【问题描述】:

此函数向 EMAIL 变量中的收件人发送一条 google hangouts 消息。

它适用于以下情况,即内联的电子邮件没有引号。

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

【问题讨论】:

  • 你真的应该使用子进程
  • @PadraicCunningham 没有指向模块的链接,我怀疑 OP 知道你在说什么。

标签: python email xmpp hangout


【解决方案1】:

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

使用串联:

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

或字符串格式化:

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

【讨论】:

  • 非常感谢,很明显!
【解决方案2】:

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

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

请参阅 this thread 了解为什么这比 % 编码更可取

【讨论】:

    猜你喜欢
    • 2022-01-25
    • 2013-11-09
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    相关资源
    最近更新 更多