bitte nicht gleich wieder steinigen.
Ich Orientire mich an einem altem bsp, wo auch funktioniert, da kenne ich die Unterordner und den Inhalt.
Ich habe einen Ordner in dem habe ich Unterordner in jedem Unterorder sind txt Dateien, hier kenne ich den Inhalt nicht mehr.
Ich möchte eine neue txt Datei erstellen mit der Anzahl der txt Dateien und den Namen pro Unterordner.
Bsp ein Ordner Textdateien in dem haben wir dann Unterordner1, Unterordner2, Unterodner3, im Unterordner1 habe ich textdate1.txt, textdatei2.txt, dann Unterordner2 textdate2.txt, textdatei3.txt usw. Jetzt möchte ich pro Unterordner eine text Datei erstellen bsp
Unterordner1.txt
anzahl 2
textdate1.txt
textdatei2.txt
I Moment komme ich ums verrecken nicht weiter, und verstehe auch nicht wo mein Fehler ist, was mache ich falsch.
Von Gedanken her müsste es passen, tut es aber leider nicht, ich bekomme die neuen Textfiles.txt erstellt aber in jedem text file steht mir der Inhalt aus allen Unterordner. Vielleicht hat einer Zeit Interesse Lust mich da in die richtige Richtung zu schupsen, damit ich meinen Fehler finde.
Wahrscheinlich kann ich mir auch eine Funktion sparen.
Es kann sein das einrücken nicht stimmt, aber wie gesagt es tut aber nicht so wie es soll.
Vilen Dank im Voraus.
Hier mein versuch.
Code: Alles auswählen
#!/usr/bin/python3
from pathlib import Path
import os
#in diesem Textfile sind alle Unterordner aufgelistet, an der letzten stelle ist eine nr, mit dieser Nummer fangen dann alle Textfiles an, #unterschiedlich für jeden Unterordner.
def suchetxt():
nr = []
filename = open("/home/a/mein_textfile/mein.txt", "r")
daten = filename.read()
filename.close()
liste = daten.split()
for i in range(len(liste)):
woerter = liste[i].split("_")
nr = woerter[-1]
matchnr.append(nr)
return matchnr
path = Path("/home/a/meinordner/mein_backup")
def find_files(path, patterns):
return [p for p in path.rglob('**/*')
if any(p.match(pattern) for pattern in patterns)
]
line_files = []
def nesto():
line_f = []
a = suchetxt()
for elem in a:
line_files = [elem+"*.txt"]
#print (line_files)
with open("/home/a/mein_textfile/mein.txt", "r") as output:
for line in output:
line = line.strip()
#hier stimmt es mit print bekomme ich genau das was ich will
#print (line)
for line_file in find_files(path, line_files):
line_f.append(line_file.name)
#hier passt es auch mit print
#print (line_f, "jdglkahdjglkahjdlkghadlkgfhaelhg")
for line_file in find_files(path, line_files):
line_f.append(line_file.name)
#hier passt es mit dem print nicht mehr
print (line_f)
with open("/home/a/meine_textfile/mails/"+line+"_intern.txt", "w", encoding= "utf8") as output:
output.write(f"Anzahl TXT's: {len(line_f)}\n\n")
names = '\n'.join(line_f)
output.write(f"Abgeholte TXT's: \n\n{names}\n")
nesto()