尝试创建一段python代码,监视目录以获取新的随机命名的csv文件。 出于某种原因,我无法找到使用* .cvs的unix技巧工作的方法。 然后我需要将特定文件通过电子邮件发送到另一个目录。 到目前为止这是我的代码
#!/usr/bin/env python
import os
import base64
import smtplib
import mimetypes
import email
import email.mime.application
import shutil
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEBase import MIMEBase
from email import encoders
#locate file and send it to the email
for file in os.listdir("/root/tmp/"):
if file.endswith(".csv"):
fromaddr = "FROM EMAIL"
toaddr = "TO EMAIL"
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = "CSV"
body = "CSV SENT SUCCESSFULLY"
msg.attach(MIMEText(body, 'plain'))
filename = "prod.csv" # <-- trying to keep the file name from below as it finds it
attachment = open("/root/tmp/prod.csv", "rb") # <--- need to send cvs as they come in
part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % filename)
msg.attach(part)
server = smtplib.SMTP('SMTP ADDRESS', 587)
server.starttls()
server.login(fromaddr, "PASSWORD")
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
server.quit()
#move to a different folder once sent
path = "/root/tmp/" # <--- using root for testing :)
moveto = "/root/sent/" # <-- destination folder
files = os.listdir(path)
files.sort()
for f in files:
src = path+f
dst = moveto+f
shutil.move(src,dst)