因此,我编写了一个脚本来汇总一些新闻通讯并通过 Telegram 发送给我。该脚本本身运行完美。现在我尝试每天早上 7 点通过 Ubun 上的 crontab 运行此脚本...
因此,我编写了一个脚本来汇总一些新闻通讯并通过 Telegram 发送给我。该脚本本身运行完美。现在,我尝试每天早上 7 点通过 Ubunutu 服务器上的 crontab 运行此脚本。日志文件看起来不错,我在脚本中使用的每个 print() 都正常显示而没有错误,但它不会发送消息。
我的 Crontab 命令:
00 12 * * * DISPLAY=:0 /usr/bin/python3 /root/data/App/Briefing/main.py >> /home/main.log &2>1
Python 脚本:
主程序
import ai as AiHandler
import mail as MailHandler
import send as Telegram
import pandas as pd
from datetime import date
def start():
files = MailHandler.scanEmails()
files = AiHandler.summarize(files)
print(files)
data = pd.read_csv('checkpoint.csv', sep=';')
checkpoint = createMsg(data)
s = f"morgentliches Briefing vom {date.today().strftime("%d.%m.%Y")}".replace(".", "\\.")
s += "\n\n\n *Die* *Lage* *am* *Morgen* *\\-* *Spiegel*\n\n\n" + createMsg(pd.read_csv('spiegel.csv', sep=';'))
s += "\n\n\n *Berlin* *\\-* *Tagesspiegel* *Checkpoint*\n\n\n" + checkpoint
s += "\n\n\n *Tech* *Update* *\\-* *ManagerMagazin* \n\n\n" + createMsg(pd.read_csv('manager.csv', sep=';'))
Telegram.sendMessage(s)
def createMsg(data):
s = ""
for i in range(5):
thema = data['Thema'][i].replace('*', '\\*')
zsm = data['Zusammenfassung'][i].replace('*', '\\*')
s += "\t" + "*" + thema + "*" + "\n"
s += zsm + "\n"
s = s.replace("-", "\\-")
s = s.replace(".", "\\.")
s = s.replace("(", "\\(")
s = s.replace(")", "\\)")
#s = s.replace("*", "\\*")
s = s.replace("!", "\\!")
return s
start()
发送.py
import telebot
def sendMessage(msg):
bot = telebot.TeleBot("XXXXXX")
bot.send_message(chat_id="@morgenbriefing", text=msg, parse_mode="MarkdownV2")
我尝试将 DISPLAY:=0 添加到 crontab 命令中,但没有帮助
Robot Framework 有 DateTime 库 。不确定它是否可以用于您的情况。如果不行,那么您可以在 Python 中创建自己的关键字,将日期转换为 UTC,并使用 BuiltIn Should Be Equal 关键字比较 RF 中的日期。
例子 date_convert.py
:
from datetime import datetime, timedelta, timezone
def convert_date_to_utc(datetime_stamp):
dt = datetime.fromisoformat(datetime_stamp)
dt_utc = dt - dt.utcoffset()
formatted_utc = dt_utc.strftime("%Y-%m-%d %H:%M:%S")
return formatted_utc
例子 date_compare.robot
:
*** Settings ***
Library DateTime
Library test.py
*** Variables ***
${DATE1} 2021-07-23T14:07:21Z
${DATE2} 2021-07-23T16:07:21+02:00
*** Test Cases ***
Compare the dates
${newdate1} Convert Date ${DATE1} result_format=%Y-%m-%d %H:%M:%S
${newdate2} test.Convert Date To Utc datetime_stamp=${DATE2}
Should Be Equal first=${newdate1} second=${newdate2}
这导致了 PASS
。希望这会有所帮助。