【发布时间】:2019-09-27 20:11:58
【问题描述】:
我需要在我的程序运行完成后发送一条消息,但我还想在文本中包含变量,例如程序运行多长时间。
这是我的短信代码:
import smtplib
carriers = {
'att': '@mms.att.net',
'tmobile': ' @tmomail.net',
'verizon': '@vtext.com',
'sprint': '@page.nextel.com'
}
def send(message):
# Replace the number with your own, or consider using an argument\dict for multiple people.
to_number = 'xxxxxxxxxx{}'.format(carriers['verizon'])
auth = ('xxxxx', 'xxxx')
# Establish a secure session with gmail's outgoing SMTP server using your gmail account
server = smtplib.SMTP("smtp.gmail.com", 587)
server.starttls()
server.login(auth[0], auth[1])
# Send text message through SMS gateway of destination number
server.sendmail(auth[0], to_number, message)
显然,我用 xxx 替换了我的信息。 现在,要发送我的文本,我正在使用以下方法调用该函数:
found = 'The program is done!'
timetook = "Time took: %s (HOUR:MIN:SEC)" % timedelta(seconds=round(elapsed_time_secs))
send(found)
send(timetook)
它只是为时间发送空白文本,但程序完成消息工作正常。如何发送时间?
【问题讨论】:
-
timedelta返回一个datetime.timedelta对象,您可能希望将其包装在字符串中以使%s工作。 -
我也试过了,好像不行。奇怪的是,我在技术上发送了一个变量(找到),但不能发送一个内部有另一个变量的变量。
-
这可能与时间和格式化字符串的存储方式有关。你试过f-string或
.format()吗? -
我试过 f-string 但不是 .format(),你建议我如何格式化它?
-
我刚试过 .format(),不工作
标签: python sms sms-gateway