Wie schon geschrieben, benutze pathlib.Path und nicht os.path und vor allem stückelt man keine Pfade per + zusammen.
Statt mehrerer Listen ist ein Wörterbuch die richtige Struktur.
Auch hier, wie bei allen Programmierproblemen, mußt Du das Problem in mehrere Teilprobleme aufteilen.
Zum einen das Parsen eines Dateinamens nach den relevanten Informationen und zum anderen das Filtern aller Dateinamen nach diesen Informationen:
Code: Alles auswählen
import re
import datetime
from pathlib import Path
from collections import namedtuple
BASEPATH = Path("C:/Users/TY/Nextcloud/Test")
SOURCE = BASEPATH / "Ende"
DESTINATION = BASEPATH / "ZIEL"
ParsedFilename = namedtuple("ParsedFilename", "anlage,date,filename")
def parse_filename(filename):
""" returns Anlage and Datetime """
match = re.match(r'Anlage_(\d+)_(\d+\.\d+.\d+.\d+.\d+)', filename.stem)
if not match:
raise ValueError("Wrong filename format")
anlage = int(match.group(1))
date = datetime.datetime.strptime(match.group(2), '%d.%m.%Y.%H.%M')
return ParsedFilename(anlage, date, filename)
def main():
filenames = sorted(map(parse_filename, SOURCE.glob('Anlage*')))
for _, anlage_filenames in groupby(filenames, key=lambda f:f.anlage):
print(list(anlage_filenames))
if __name__ == "__main__":
main()