pip install -i https://pypi.tuna.tsinghua.edu.cn/simple qrcode
import qrcode
from PIL import Image

# 要包含在二维码中的文本内容
text_to_encode = "远程文字生成二维码内容"

# 创建二维码对象
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)

# 将文本内容添加到二维码中
qr.add_data(text_to_encode)
qr.make(fit=True)

# 创建Pillow(PIL)图像对象
img = qr.make_image(fill_color="black", back_color="white")

# 显示二维码图像
img.show()
#encoding:utf-8
import os
import datetime
import time
import subprocess
import datetime
path = r'C:\Users\datagrand.WIN-3MDLLMRCBM4\.datagrand\robot\flowLogs'
robot_path = r"C:\Users\datagrand.WIN-3MDLLMRCBM4\AppData\Local\Programs\Data Grand\Data Grand Robot\Data Grand Robot.exe"
robot_app_name = "Data Grand Robot.exe"
rec_user = '534640040@qq.com'

def get_ip():
    import datetime
    import socket
    # 函数 gethostname() 返回当前正在执行 Python 的系统主机名
    res = socket.gethostbyname(socket.gethostname())
    return res



# 定义一个函数,用于pillow截取电脑全屏并返回路径
def capture_screen():
    # 导入相关模块
    from PIL import ImageGrab
    import time

    """
    返回值: 截图文件的路径
    """
    # 使用ImageGrab.grab()方法截取全屏
    screenshot = ImageGrab.grab()
    # 生成截图文件的路径,以当前时间戳为文件名
    path = str(int(time.time())) + ".png"
    # 保存截图文件
    screenshot.save(path)
    # 返回截图文件的路径
    return path

# 调用函数,打印返回值


# 定义一个函数,用于发邮件和发图片,用qq邮箱发送,图片在正文显示
def send_email_with_image(receiver, subject, content, image_file):
    sender = '534640040@qq.com'
    password = 'zkddrplhdfabbjah'

    # 导入相关模块
    import smtplib
    from email.mime.multipart import MIMEMultipart
    from email.mime.text import MIMEText
    from email.mime.image import MIMEImage
    """
    sender: 发件人邮箱
    password: 发件人邮箱密码或授权码
    receiver: 收件人邮箱
    subject: 邮件主题
    content: 邮件内容
    image_file: 图片文件名
    """
    # 创建一个带附件的邮件实例
    msg = MIMEMultipart()
    msg["From"] = sender # 设置发件人
    msg["To"] = receiver # 设置收件人
    msg["Subject"] = subject # 设置主题

    # 创建邮件正文,使用HTML格式,并插入邮件内容和图片
    body = f"""
    <p>{content}</p>
    <p>Here is the image:</p>
    <p><img src="cid:image1"></p>
    """
    msg.attach(MIMEText(body, "html")) # 将正文添加到邮件实例中

    # 指定图片文件的路径,打开并读取为二进制数据
    fp = open(image_file, "rb")
    img = MIMEImage(fp.read())
    fp.close()

    # 定义图片的ID,在HTML文本中引用
    img.add_header("Content-ID", "<image1>")
    msg.attach(img) # 将图片添加到邮件实例中

    # 创建一个SMTP对象,连接到QQ邮箱的服务器
    smtp = smtplib.SMTP_SSL("smtp.qq.com", 465)
    smtp.login(sender, password) # 登录发件人邮箱
    smtp.sendmail(sender, receiver, msg.as_string()) # 发送邮件
    smtp.quit() # 退出SMTP对象

    print("Email sent successfully.") # 打印发送成功的提示信息


def write_log(message):
    # 获取当前日期
    today = datetime.date.today()

    # 格式化日期作为文件名
    file_path = r'E:\logs'
    if not os.path.exists(file_path):
        os.makedirs(file_path)

    file_name = os.path.join(file_path, today.strftime("%Y-%m-%d") + ".txt")

    # 获取当前时间戳
    current_time = datetime.datetime.now().strftime("%H:%M:%S")

    # 拼接带时间戳的日志内容
    log_message = f"[{current_time}] {message}\n"

    # 将日志内容追加写入文件
    with open(file_name, "a") as file:
        file.write(log_message)

# 示例用法



files = os.listdir(path)
flag = 0

for file in files:
    file_path = os.path.join(path, file)
    # 获取文件的创建时间
    created_time = os.path.getctime(file_path)
    # 将创建时间转换为日期对象
    created_date = datetime.datetime.fromtimestamp(created_time).date()

    # 获取今天的日期
    today = datetime.date.today()

    # 判断创建日期是否等于今天的日期
    if created_date == today:
        # print("文件的创建时间是今天!")
        flag = 1
        break
    else:
        # print("文件的创建时间不是今天。")
        pass
if flag == 1:
    print("天机器人正常, 有今天日志%s" % path)
    write_log("天机器人正常, 有今天日志%s" % path)
else:
    print("需要重启机器人, 没有今天日志%s" % path)
    
    send_email_with_image(rec_user, get_ip() + '需要重启机器人,', "需要重启机器人, 没有今天日志%s" % path, capture_screen())

    write_log("需要重启机器人, 没有今天日志%s" % path)
    subprocess.Popen('taskkill /f /t /im "%s"' % robot_app_name)

    time.sleep(2)
    subprocess.Popen('"%s"' % robot_path)


def is_app_running(robot_app_name):
    
    result = subprocess.run("tasklist", capture_output=True, text=True)
    return robot_app_name in result.stdout

if is_app_running(robot_app_name):
    print(robot_app_name + "应用程序已经在运行中。")
    write_log(robot_app_name + "应用程序已经在运行中。")
else:
    print(robot_app_name + "应用程序未启动。")
    write_log(robot_app_name + "应用程序未启动。")
    subprocess.Popen('"%s"' % robot_path)
    send_email_with_image(rec_user, get_ip() + '机器人程序未启动', "需要重启机器人", capture_screen())

    write_log("结束")
    # os.system("'%s'" % r'C:\Users\datagrand.WIN-3MDLLMRCBM4\AppData\Local\Programs\Data Grand\Data Grand Robot\Data Grand Robot.exe')

http://nas.yys.zone:8088/s/54MzPEft2fgkdfr