Seite 1 von 3
txt mail etc
Verfasst: Samstag 11. Juli 2020, 10:34
von ganja
Hallo miteinander,
ich hoffe ihr könnt mir weiter helfen, ich komme im moment selber nicht weiter.
Ich habe mehrere Verzeichnisse mit unter Verzeichnissen und irgendwann txt files in Unterverzeichnissen.
Jetzt möchte ich durch Verzeichnisse durch gehen wenn in einem bestimmte Verzeichnis pdf gefunden wird oder nicht soll eine 0 oder eine 1 merken, dann möchte ich emails senden einmal nur mit Anzahl pdf's, einmal mit dem file und Anzahl aus allen Verzeichnissen. Im Moment weiß ich nicht wie verknüpfe ich die Mail Adressen mit den Verzeichnissen, ich habe gedacht
eine liste für jede email Adresse, aber irgendwie sieht mir das nicht richtig aus, habe mir auch die Funktion re match angeschaut aber komme im moment nicht klar mit der Verknüpfung der emails mit Verzeichnissen.
Vielen Dank im Voraus für jeden Tip und Anregung, ich hoffe das ich es verständlich erklärt habe falls nicht versuche ich es noch einmal zu beschreiben.
Mail=[[mail1,mail2,mail3],[Verzeichnis1,[unterverzeichnis,1[unterverzeichnis01]]]]]
Z.B
mail1, mail2 , mail3,
anzahl 55
Verzeichnis345
xxxxxxxx.txt
xxxxxxxx.txt
Verzeichnis346
xxxxxxxx.txt
xxxxxxxx.txt
usw.
mail11
Anzahl 23
mail 12
Anzahl 15
/Verzeichnis/unterverzeichnis1/unterverzeichnis2/unterverzeichnis3/xxxxfile.txt
/Verzeichnis/unterverzeichnis1/unterverzeichnis2/unterverzeichnis3/yyyyfile.txt
/Verzechnis/unterverzeichnis2/unterverzeichnis2/unterverzeichnis3/zzzzfile.txt
usw.
Re: txt mail etc
Verfasst: Samstag 11. Juli 2020, 13:50
von Sirius3
Wie sind denn email-Adressen mit Verzeichnissen verknüpft? Du hast mehr mehrere email-Adressen die für bestimmte Verzeichnisse die Dateien zählen sollen?
Das Beispiel ist völlig unbrauchbar, weil in der Definitionsliste ganz andere Verzeichnisse auftauchen als unter z.B.
Und was habend sollte txt-Dateien mit den PDFs zu tun?
Re: txt mail etc
Verfasst: Samstag 11. Juli 2020, 14:02
von __blackjack__
@ganja: Also mir ist nicht klar was Du da genau erreichen willst. Das ist alles etwas wirr beschrieben und sehr umfangreich und ich sehe auch gar keine konkrete Frage in dem ganzen Beitrag.
Programmieren bedeutet ein Problem solange in immer kleinere Teilprobleme zu zerlegen bis man die einzelnen Teilprobleme mit je einer Funktion mit wenigen Zeilen Code lösen kann. Die jeweilige Funktion testet man dann, und erst wenn die tut was sie soll, macht man mit der nächsten Funktion weiter. Das macht man solange bis die ganzen Teillösungen zusammen eine Gesamtlösung ergeben.
Falls Du Dir nur die Werte 0 oder 1 für irgendetwas merken möchtest, dann möchtest Du Dir eigentlich die Werte `False` und `True` merken statt Zahlen dafür zu missbrauchen.
Re: txt mail etc
Verfasst: Samstag 11. Juli 2020, 15:39
von ganja
Hallo Sirius3,
Hallo _blackjack_,
@Sirius3 im Moment habe ich diese gar nicht verknüpft, komme da nicht weiter, stimmt das Beispiel oben ist unverständlich Total.
@_blackjack_ ja da hast du vollkommen recht so habe ich es gemacht, function rsync, function Anzahl, function email senden, true and false geht nicht da ich die Anzahl brauche auch wenn ein Unterverzeichnisse leer ist möchte ich es in der email mit haben Halt mit 0, klar wenn false dann 0.
@Sirius und @_blackjack_ Vielen Dank noch mal an euch 2 ich erinnere mich vor paar Jahren.
ich mach backup von einer Z.B HDD, da hole ich unterschiedliche Verzeichnisse mit Unterverzeichnissen und irgendwann tauchen in Unterschiedlichen Unterverzeichnissen file.txt oder file.pdf.
Für Backup habe ich eine Funktion wo ich rsync starte, wenn alles geholt ist starte ich eine andere Funktion und gehe die Unterverzeichnisse zähle file.txt oder file.pdf und starte andere Funktion die email sendet an unterschiedliche Empfänger, ein oder mehrere Empfänger bekommen nur die Anzahl der file.txt oder file.pdf, andere Empfänger bekommen die Anzahl und den Inhalt des Unterverzeichnisses, bis dahin habe ich das hin bekommen emails kommen an, der Inhalt der Email ist genau so wie ich es haben will.
Mehrere Empfänger sollen jetzt eine Email bekommen wenn im Verzeichnis xxx fil.txt oder file.pdf gefunden wird 2x Email nur Anzahl der Dateien Z.B:
Anzahl 10.
4x Email mit Anzahl + Dateien Z.B
Unterverzeichniss_xxxx file.txt
Unterverzeichniss_yyyy file1.txt
Unterverzechniss_xyzx file2.txt
also 10 Dateien.
Im Moment weiß ich nicht wie Ich die Email Empfänger und die Erwartenden Verzeichnisse definieren soll und mit einer Schleife das ganze durchgehen soll.
Email Empfänger sind mir bekannt so wie die erwartenden Unterverzeichnisse.
Irgendwo muss ich doch die Emailempfänger mit dem Verzeichnisse definieren denke ich und da komme ich jetzt nicht weiter.
Email1,Email2 und dann die erwartenden Verzeichnisse nur Anzahl der Dateien.
Email1, Email2,Email3,Email4 and dann die Anzahl und der Inhalt der erwartenden Verzeichnisse
Ein Emailempfänger mehrere Verzeichnisse.
Und dann mehrere Emailempfänger und mehrere Verzeichnisse.
Ich hoffe jetzt ist es klarer besser kann ich es nicht erklären.
Ich kann meine Funktionen die ich bis jetzt habe posten
Re: txt mail etc
Verfasst: Freitag 17. Juli 2020, 11:44
von ganja
Hallo,
mein Vorhaben scheitert gerade.
Ich versuche rsync aus zu führen und Passwort zu übergeben aber leider geht es nicht, mit ssh geht es nicht, au f der anderen Seite läuft deamon, das versuche ich gerade:
subrocess.run('rsync -rvt rsync://user@192.192.192.192/abc/ /home/aaa/hier/')
password:
Es öffnet sich die Shell und wartet auf die eingabe vom password, gibt es eine Möglichkeit das Passwort zu übergeben und Enter zu klicken automatisch ohne das ich es von Hand eingeben muss?
Ich habe auch versucht mit der Option --password-file=/hier/ist/passwort/rsyncd.secrets leider hat da der user rsync kein recht zu lesen.
Im Moment droht mein vorhaben zu scheitern ich habe es mir viel einfache vorgestellt eine Interaktion aus Python mit der Linux shell!
Danke im Voraus, jeder Tipp Anregung ist willkommen auch Kritik, ich weiß das es mit ssh einfacher und besser wäre, geht aber nicht.
Re: txt mail etc
Verfasst: Freitag 17. Juli 2020, 11:54
von __deets__
Man benutzt ssh (oder rsync, das benutzt selbst ssh unten drunter) nicht mit einer expliziten Passwort-Angabe. Sondern nutzt die public/private-Key Authorisierung. Damit brauchst du dann kein Passwort mehr. Ein Stichwort dafuer ist zB authorized_keys.
Re: txt mail etc
Verfasst: Freitag 17. Juli 2020, 12:05
von ganja
Ich habe geschrieben ssh key geht nicht.
Ich muss explizit Passwort angeben.
Re: txt mail etc
Verfasst: Freitag 17. Juli 2020, 12:28
von __deets__
Warum geht das nicht?
Und in der man-page von rsync steht das hier:
"""
Some modules on the remote daemon may require authentication. If so, you will receive a
password prompt when you connect. You can avoid the password prompt by setting the environ-
ment variable RSYNC_PASSWORD to the password you want to use or using the --password-file
option. This may be useful when scripting rsync.
"""
Re: txt mail etc
Verfasst: Freitag 17. Juli 2020, 15:51
von ganja
Danke, habe es hin bekommen

Re: txt mail etc
Verfasst: Dienstag 21. Juli 2020, 08:54
von ganja
Guten morgen,
mit der Funktion erstelle ich ein txt datei in der ich den ganzen inhalt der Ordner und unterordner habe,
wie kann ich dann im nächsten schritt die datei.txt durch laufen und schauen ob in bestimmten Unterordner sich eine datei befindet und wenn ja merken, dann weiter zum nächsten unterordner, und dann per email den inhalt senden nicht die datei nur den ihnhalt. Wie bereits oben beschrieben einige emails erhalten dann nur die anzah der datein aus bestimmten Unterordner andere emails erhalten dann den namen der Datei.
Ist es sinnvoll erstmal eine txt datei mit dem inhalt zu erstellen?
Ist das überhaupt möglich es mit python zu schaffen?
Wie kann ich mehrere unterordner und emails verknüpfen?
Bin für jeden Tipp dankbar, Momentan komme ich nicht weiter meine kenntnisse reichen nicht aus.
emails:
1_unterordner = email1@de,email2@de,email3@de,email4@de,email5@de
2_unterordner = email10@de,email20@de,email30@de,email40@de,email50@de
3_unterordner = email1@de,email20@de,email3@de,email40@de,email5@de
4_unterordner = email70@de,email80@de,email90@de,email99@de,email77@de
Ordner:
/home/a/ab/1_unterordner/1_datei
/home/a/ab/2_unterordner/
/home/a/ab/3_unterordner/1_datei
usw.
Code: Alles auswählen
def list_files_all(startpath):
startpath = '/home/a/ab/'
#print (aktuell)
with open("folder_structure_all.txt", "w") as f_output:
f_output.write(aktuell + '\n''\n''\n')
#
file_count = sum(len(files) for _, _, files in os.walk(startpath))
f_output.write("Anzahl PDF's: " + str(file_count) + '\n\n')
#anzahl dateien
for root, dirs, files in os.walk(startpath):
level = root.replace(startpath, '').count(os.sep)
indent = '\t' * 1 * (level)
output_string = '{}{}/'.format(indent, os.path.basename(root))
print(output_string)
f_output.write(output_string + '\n')
subindent = '\t' * 1 * (level + 1)
for f in files:
output_string = '{}{}'.format(subindent, f)
print(output_string)
f_output.write(output_string + '\n')
Re: txt mail etc
Verfasst: Dienstag 21. Juli 2020, 09:12
von Sirius3
Wenn die Datei sonst nicht gebraucht wird, brauchst Du keine Datei erzeugen.
Warum sollte das nicht in Python möglich sein?
Für die Verknüpfung mußt Du eine passende Datenstruktur definieren.
Und wenn es mehrere sein müssen, dann werden die Datenstrukturen eventuelle etwas komplizierter.
Da ich aber immer noch nicht verstanden habe, was Du eigentlich machen willst, kann ich da nicht näher helfen.
os.walk ist veraltet, statt dessen solltest Du pathlib.Path.rglob benutzen, wenn es wirklich beliebig viele Unterverzeichnisse durchsucht werden sollen.
Das f_-Präfix ist unnötig, * 1 ist ein no-op.
Re: txt mail etc
Verfasst: Dienstag 21. Juli 2020, 10:23
von ganja
@Sirius3
ich gehe durch Ordner und Unterordner, suche nach pdf oder txt Dateien, auch wenn ich nichts gefunden habe schicke ich eine email an mehrere Emailadressen, einige emails erhalten dann nur die Anzahl der Dateien z.b in insgesamt 10 Unterverzeichnissen 3 Dateien gefunden, andere emails erhalten die Anzahl und den Namen der Datei.
Besser kann man es nicht erklären
Re: txt mail etc
Verfasst: Dienstag 21. Juli 2020, 11:01
von Sirius3
Dann schreib doch erstmal eine Funktion, die Verzeichnisse durchsucht und pro Unterverzeichnis die Dateien in eine Liste packt.
Re: txt mail etc
Verfasst: Dienstag 21. Juli 2020, 13:51
von ganja
@Sirius3
ich hoffe ich habe dich richtig verstanden.
In txt_file ist alles drin, ich denke den Pfad zu der Datei kann man nachher abschneiden so das in der txt_file nur die Files sind
/home/a/ab/abc/abcd/abcdf/1_text.txt
/home/a/ab/abc/abcf/abcd/1_text.txt
Code: Alles auswählen
def txt_liste():
p = Path('/home/a/ab')
for txt_file in p.glob('**/*.txt):
list = txt_file
print (list)
Re: txt mail etc
Verfasst: Dienstag 21. Juli 2020, 14:02
von Sirius3
Soweit ich Dich verstanden habe, willst Du den ersten Teil der Pfade abspalten, um sie dann verschiedenen Leuten zu schicken.
Re: txt mail etc
Verfasst: Dienstag 21. Juli 2020, 14:17
von ganja
Nein nicht den ersten Teil, den letzten teil file.txt das möchte ich per email senden und die Anzahl als Überschrift in der Email.
Aber ich glaube das die Funktion nicht das richtige ist.
Re: txt mail etc
Verfasst: Dienstag 21. Juli 2020, 14:21
von Sirius3
Für email1 willst Du doch die Files in 1_unterordner und 3_unterordner sammeln, für email2 aber nur 1_unterordner.
Also brauchst Du doch ein Wörterbuch, das die Dateien den Unterordnern zuordnet, also mußt Du doch den ersten Teil abspalten, um daraus ein Wörterbuch aufzubauen.
Re: txt mail etc
Verfasst: Dienstag 21. Juli 2020, 14:27
von ganja
gib mir bitte bitte ein bsp. du hast sicher etwas zu Hand
Re: txt mail etc
Verfasst: Dienstag 21. Juli 2020, 16:42
von ganja
Code: Alles auswählen
def txt_liste():
mylist = []
p = Path('path')
for txt_file in p.glob('**/*.txt'):
mylist.append(str(txt_file))
for element in my list:
element = element.split('/')
element =element[-1]
print (element)
print ('Anzahl', len(mylist))
Jetzt habe ich eigentlich die liste so wie ich sie brauche auch die Anzahl der Dateien.
Eigentlich bin ich wieder am Anfang

keine Ahnung wie jetzt weiter, der Anfang der Dateien ist mir bekannt, wahrscheinlich muss ich jetzt in einer nächsten Schleife nach Dateien suchen wenn vorhanden dann merken weiter suchen merken dann Email senden aber wie?
Re: txt mail etc
Verfasst: Dienstag 21. Juli 2020, 19:33
von __blackjack__
@ganja: Der Code ist so sicher nie gelaufen, denn in Variablennamen dürfen keine Leerzeichen stehen (``for element in my list:``) und es ist wohl auch falsch eingerückt, denn die Ausgaben für alle Dateien für jede einzelne Datei zu machen ist wenig sinnvoll.
Den `Path` in eine Zeichenkette umzuwandeln und da dann mit Zeichenkettenoperationen drauf zu operieren ist falsch.
`p` und `mylist` sind schlechte Namen. `txt_file` ist mindestens irreführend weil hinter dem Namen kein Dateiobjekt steht. Und `element` ist viel zu generisch. Der Funktionsname beschreibt nicht die Tätigkeit die diese Funktion durchführt.
Mein Problem mit Deinen Beiträgen ist wohl letztlich auch Dein Problem beim Programmieren: Deine Beschreibungen sind alles andere als verständlich. Man muss Probleme und Problemlösungen sauber und Präzise beschreiben können. Wenn das schon nicht in natürlicher Sprache klappt, wo mitdenkende Menschen das lesen, dann wird es auch sehr problematisch das formal in einer Programmiersprache für einen dummen Rechner zu formulieren.
Der Letzte Satz in dem Beitrag ist nicht nachvollziehbar. Was heisst jetzt in einer nächsten Schleife nach Dateien suchen? Das macht der Code doch bereits. Das heisst man könnte da vielleicht auch tatsächlich noch einen Test einbauen der prüft ob der jeweilige Pfad auch zu einer Datei und nicht zu einem Verzeichnis führt.