Python自动化:扫描文件夹并发送文件树形结构到邮箱
在日常工作和学习中,我们经常需要管理和查看大量的文件。有时候,为了更好地理解文件的组织结构,我们需要一个清晰的文件树形视图。此外,如果我们需要将这个结构分享给其他人,手动复制和粘贴就显得不够高效。本文将介绍如何使用Python自动化这一过程,通过扫描指定目录下的所有文件,并将文件树形结构发送到指定的邮箱。
任务
任务:编写python代码,扫描指定的目录下的所有文件,将这些扫描的文本内容邮件发送到指定邮箱(如:自己的qq/gmail/163邮箱)
此处我使用QQ邮箱向gmail邮箱发送
如果你选择使用QQ邮箱作为SMTP服务器,你需要确保你的QQ邮箱启用了SMTP服务,并且你有一个有效的授权码。
设置授权码参考:简书:31.1企业级开发进阶3.1:发送电子邮件
代码如下:
import os
import smtplib
from email.mime.text import MIMEText
def scan_file(path, depth=0):
"""扫描文件并打印树形结构"""
indent = " " * depth
files = sorted(os.listdir(path))
file_tree = ""
for f in files:
fullpath = os.path.join(path, f)
if os.path.isdir(fullpath):
file_tree += f"{indent}├── {f}/\n"
file_tree += scan_file(fullpath, depth + 1)
if depth == 0 and f < files[-1]:
file_tree += f"{indent}│ \n"
elif os.path.isfile(fullpath):
file_tree += f"{indent}├── {f}\n"
if depth == 0 and f < files[-1]:
file_tree += f"{indent}│ \n"
return file_tree
def send_email(sender_email, sender_password, recipient, subject, body):
# SMTP服务器信息(以QQ邮箱为例)
smtp_server = 'smtp.qq.com'
smtp_port = 587
# 创建SMTP会话
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(sender_email, sender_password)
# 构建邮件内容
message = MIMEText(body, 'plain', 'utf-8')
message['Subject'] = subject
message['From'] = sender_email
message['To'] = recipient
# 发送邮件
server.sendmail(sender_email, recipient, message.as_string())
# 关闭SMTP会话
server.quit()
if __name__ == '__main__':
path = "D:\\111\\Typora"
# 扫描文件并收集结果
file_tree = scan_file(path)
# 发送邮件
sender_email = '1642385935@qq.com'
sender_password = '*************' # 此处密码填写授权码
recipient = 'pbpvza1@gmail.com'
subject = '文件树形结构'
send_email(sender_email, sender_password, recipient, subject, file_tree)
运行脚本
保存上述脚本为.py文件,并在命令行或你的Python IDE中运行它。如果一切设置正确,脚本将会扫描指定的目录,生成文件树形结构,并将其作为邮件正文发送到指定的邮箱。
结果展示:
结语
自动化是提高效率的关键。通过这个简单的Python脚本,我们不仅能够快速获取文件的树形结构,还可以方便地与他人分享这一信息。这种方法在处理大型项目或需要频繁报告文件状态的场合尤其有用。
希望这篇文章能够帮助你更好地管理你的文件,并提高你的工作效率。如果你有任何问题或建议,请随时在评论区交流。
请注意,这篇文章是一个示例,你需要根据实际情况调整代码和文章内容。在分享代码时,请确保遵守相关的隐私和安全规范,不要泄露任何敏感信息。