Mailversand bestimmer Dateien

Code-Stücke können hier veröffentlicht werden.
Antworten
Richard2102
User
Beiträge: 1
Registriert: Montag 15. Juni 2020, 12:24

Hallo Zusammen,

ich bin neu hier und fange gerade erst mit Python an.
Ich habe eine Frage zu einem Mail-Versand.

Aktuell habe ich ein Skript geschrieben, mit dem ich eine Mail, mit einer Datei im Anhang, versenden kann. Im Anschluss wird die versendete Datei gelöscht.
Hintergrund ist, dass immer zwei Dateien erstellt werden. Eine soll versendet werden und die andere soll gespeichert bleiben.
Bei der Datei welche versendet wird sind im Dateinamen weniger Zeichen zu finden. Die andere Datei fängt immer mit dem Buchstaben "M" an.

Daher würde ich gerne eine Abfrage machen, ob die Datei mit "M" anfängt. Ist dies so wird weitergesucht bis die Datei ohne M gefunden wird. Diese wird dann versendet und gelöscht.
Wie ist dies Möglich?

bin ich hier auf dem richtigen weg?
from glob import *
for file in glob("/media/*.txt"):
dateiname = file
if dateiname == "M*"
die nächste Datei heraussuchen
dateiname != "M*"
communicationLib.SendMailToWith(...)
os.remove(dateiname)


Grüße und vorab schon mal Danke
Richard
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

*-Importe sind schlecht. Importiere immer Namen explizit. Eingerückt wird immer mit 4 Leerzeichen pro Ebene, nicht 3.
`file` ist eigentlich ein `filename`. Warum nennst Du das dann gleich in der nächsten Zeile in `dateiname` um?
Wenn Du schon glob benutzt, dann kannst Du gleich nach Namen, die mit einem M beginnen, suchen.
Statt `glob` verwendet man heutzutage `pathlib.Path.glob`.
Module schreibt man wie Variablennamen komplett klein. Das `lib` bei `communicationlib` ist überflüssig, da ein Modul ja automatisch eine Library ist. Auch die Funktion darin ist falsch geschrieben: `send_mail_to_with`, wobei dieses `with` grammatikalisch unsinnig ist, und das `to` überflüssig.

Code: Alles auswählen

from pathlib import Path
MEDIA_PATH = Path('/media')

for filename in MEDIA_PATH.glob("M*.txt"):
    communication.send_mail(..., filename, ...)
    filename.unlink()
Antworten