个人技术分享

scan_file.py扫描目录函数

"""文件扫描脚本"""
import os
import sys


def scan_file(path, indent=""):

    # 初始化一个列表来存储扫描结果
    scan_results = []

    # 获取当前指定目录中的所有文件(文件夹+文件)
    files = os.listdir(path)

    # 遍历列表中的每个文件
    for file in files:
        # 拼接路径
        file_path = os.path.join(path, file)

        # 如果是文件,添加文件信息到结果列表
        if os.path.isfile(file_path):
            scan_results.append(f"{indent}文件:{file_path}")

        # 如果是文件夹,先添加文件夹信息到结果列表,然后递归调用
        if os.path.isdir(file_path):
            scan_results.append(f"{indent}文件夹:{file_path}")

            # 递归调用,并将结果添加到当前列表
            indent += "---"
            scan_results.extend(scan_file(file_path, indent))

    # 返回结果列表
    return scan_results

send_email.py发送邮件函数

import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr


def send_email(outcome):
    # 发件人邮箱账号
    sender_email = ''
    # 发件人邮箱密码(或授权码)
    password = ''
    # 收件人邮箱账号
    receiver_email = ''

    # 将列表转换为字符串,每个元素一行
    text = '\n'.join(outcome)

    # 创建邮件对象
    msg = MIMEText(text, 'plain', 'utf-8')

    # 设置发件人
    msg['From'] = formataddr(('小小怪下士', sender_email))
    # 设置收件人
    msg['To'] = formataddr(('大大怪将军', receiver_email))
    # 设置邮件主题
    msg['Subject'] = '目录扫描结果'

    # 创建SMTP对象
    server = smtplib.SMTP('smtp.qq.com', 587)  # 替换为您的SMTP服务器地址和端口
    server.starttls()  # 启动TLS加密
    server.login(sender_email, password)  # 登录发件人邮箱

    try:
        # 发送邮件
        server.sendmail(sender_email, receiver_email, msg.as_string())
        print('邮件发送成功')
    except Exception as e:
        print('邮件发送失败:', e)
    finally:
        server.quit()  # 关闭连接

main.py程序入口

import scan_file
import send_email

if __name__ == '__main__':
    path = "D:\\欧鹏\\py"
    results = scan_file.scan_file(path)
    send_email.send_email(results)