2016-12-29 14 views
0

Guten Nachmittag.Python Referenzieren Sie einen Ordner oder Dateien in einem Ordner

Ich würde gerne wissen, wie Dateien oder ein Ordner auf eine Variable in Python verweisen.

Können sagen, ich habe einige Dateien mit den folgenden Namen:

161225_file1.txt 
161225_file2.txt 
161225_file3.txt 
161226_file1.txt 
161226_file2.txt 
161226_file3.txt 
161227_file1.txt 
161227_file2.txt 
161227_file3.txt 

ich mag diese Dateien zu einer Variablen zugewiesen werden, so dass ich es in einem E-Mail-Skript verwendet, kann ich haben, ich brauche auch nur die Dateien mit ein bestimmtes Datum.

Im Moment habe ich nur folgendes:

#!/usr/bin/env python 
############################### 
#Imports (some library imports) 
############################### 
import sys 
import time 
import os 
import re 
from datetime import date,timedelta 
from lib.osp import Connection 
from lib.sendmail import * 


############################### 
#Parameters (some parameters i`ll use to send the email, like the email body message with yesterdays date) 
############################### 

ndays = 1 
yesterday = date.today() - timedelta(days=ndays) 
address = '[email protected]' 
title = '"Email Test %s"' % yesterday 
attachments = '' 

mail_body = "This is a random message with yesterday`s date %s" % yesterday 


############################### 
#Paths (Path that contain the home directory and the directory of the files i want to attach) 
############################### 


homedir = '/FILES/user/emails/' 
filesdir = '/FILES/user/emails/TestFolder/' 


############################### 
#Script 
############################### 

#starts the mail function 

start_mail() 


#whatever message enters here will be in the email`s body. 
write_mail(mail_body) 



#gets everything you did before this step and sends it vial email. 
send_mail(address,title,attachments) 
+0

Mögliche Duplikat befestigen finden können [So senden Sie E-Mail-Anhänge mit Python] (http://stackoverflow.com/questions/3362600/how-to-send-email-attachments-with-python) –

+0

Was ist das Problem/die Frage? – mikerose

+0

Versuchen Sie, die Dateinamen in eine Liste zu laden? Versuchen Sie den Inhalt der Dateien zu lesen? Bitte sei spezifischer. – 2rs2ts

Antwort

0

os.listdir() werden die Dateien und Unterverzeichnisse in einem Verzeichnis.

Wenn Sie nur Dateien möchten, verwenden Sie os.path:

from os import listdir 
from os.path import isfile, join 
    files = [f for f in listdir(homedir) if isfile(join(homedir, f))] 

Und Sie detaillierte explantion wie Datei an eine E-Mail here Dank Oli

import smtplib 
from os.path import basename 
from email.mime.application import MIMEApplication 
from email.mime.multipart import MIMEMultipart 
from email.mime.text import MIMEText 
from email.utils import COMMASPACE, formatdate 


def send_mail(send_from, send_to, subject, text, files=None, 
       server="127.0.0.1"): 
    assert isinstance(send_to, list) 

    msg = MIMEMultipart() 
    msg['From'] = send_from 
    msg['To'] = COMMASPACE.join(send_to) 
    msg['Date'] = formatdate(localtime=True) 
    msg['Subject'] = subject 

    msg.attach(MIMEText(text)) 

    for f in files or []: 
     with open(f, "rb") as fil: 
      part = MIMEApplication(
       fil.read(), 
       Name=basename(f) 
      ) 
      part['Content-Disposition'] = 'attachment; filename="%s"' % basename(f) 
      msg.attach(part) 


    smtp = smtplib.SMTP(server) 
    smtp.sendmail(send_from, send_to, msg.as_string()) 
    smtp.close() 
Verwandte Themen