Python - wie automatisch Ordner erstellen, die den gleichen Namen wie die Datei haben?

Hanibal545  30.08.2022, 17:30

Also soll zu jeder Datei ein Ordner erstellt werden und in den Ordner die Datei verschoben werden, sodass man am Ende 200 Ordner mir Dateien hat?

SonyM4 
Fragesteller
 30.08.2022, 17:35

Der aktuelle Ordner hat jeweils eine TXT und eine XML Datei mit dem gleichen Namen. Ich möchte, dass die beiden Dateien in je 1 Ordner kommen, sodass ich 100 Ordner habe

Hanibal545  30.08.2022, 17:48

Hast du jetzt 50 ordner mit je 2 Dokumenten oder 1 wo 50 txt und 50 xml Datei sind?

SonyM4 
Fragesteller
 30.08.2022, 18:59

Ich habe 1 Ordner mit 200 Dokumenten. Bei diesem möchte ich alle gleichen Namen in 1 Ordner verschieben. Bsp. Xc123.txt und Xc123.xml kommt in den selben Ordner

Hanibal545  30.08.2022, 20:32

Mit Windows oder Linux?

SonyM4 
Fragesteller
 30.08.2022, 20:33

Windows

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ist doch das leichteste.

  1. Alle Dateien abfragen
  2. Alle Dateien mit Schleife durchlaufen
  3. Schauen ob Ordner existiert, sonst erstellen (anhand der Datei aus der Schleife (Extension entfernen nicht vergessen))
  4. Dann verschieben

Das war's.

Wie die einzelnen Funktionen dazu heißen kann man googlen

SonyM4 
Fragesteller
 30.08.2022, 20:36

Wie wähle ich denn aus, wie viele Zeichen von der Datei als Name für den neuen Ordner ausgewählt werden müssen? Ich will ja, dass die Ordner automatisch erstellt und die Dateien reinkopiert werden

0
FaTech  31.08.2022, 00:55
@SonyM4

Warum willst du auswählen, wie viele Zeichen ? Mach einfach einen Split bei Punkt und wert 0 des Arrays ist der Name ohne Erweiterung

1
SonyM4 
Fragesteller
 31.08.2022, 09:42
@FaTech

Ich komme nicht weiter und online habe ich nichts dergleichen gefunden. Hast du noch irgendwelche Tipps?

0
FaTech  31.08.2022, 09:43
@SonyM4

Ich komme nicht weiter, ist sehr aussagekräftig ... Kannst du da genauer drauf eingehen? Wo hängt es?

0
SonyM4 
Fragesteller
 31.08.2022, 10:06
@FaTech

Also ich konnte den Datensatz nach Datum sortieren, d.h. Alle Dateien sind jetzt in dem jeweiligen Ordner mit dem dazugehörigem Datum. Jetzt will ich in dem Ordner Bsp. 2022-06-06 die Dateien/Dokumente nochmal in die jeweiligen Ordner verschieben, die dann so heißen wie die Datei. Genau da komme ich nicht weiter. Wie mache ich das, dass ich Ordner erstelle, die dann so heißen wie die Datei?

0
FaTech  31.08.2022, 10:13
@SonyM4

Ja, aber das ist doch das, wie ich es oben beschrieben habe oder verstehe ich da was falsch?

0
SonyM4 
Fragesteller
 31.08.2022, 12:38
@FaTech

OK habe es hinbekommen mit for Schleife und split, danach check ob Ordner existiert mit if not os.path.isdir... Dann shutil.move. Hat funktioniert. Danke dir

1
SonyM4 
Fragesteller
 08.09.2022, 12:47
@SonyM4

Kann gelöscht werden

0
SonyM4 
Fragesteller
 08.09.2022, 12:48
@FaTech

Kannst du mir evtl. noch mitteilen, wie ich eine Protokollfunktion einbaue, dass in eine CSV Datei das Ergebnis/den Output ausgibt?

Also bspw. X Dateien mit der Endung TXT und X Dateien mit der Endung XML wurden verschoben..

0
FaTech  08.09.2022, 12:58
@SonyM4

Google > Python write to file

Und schreiben tust du dann einfach Semikolon getrennt. CSV Dateien arbeiten mit Semikolon und Zeilenumbruch

0
SonyM4 
Fragesteller
 08.09.2022, 13:42
@FaTech

OK, das mit toWrite kenne ich. Mein Problem ist, dass ich die Dateien, die ich automatisch in die jeweiligen Ordner verschoben habe, als Liste in die CSV Datei packen möchte. Also das unter der 1. Spalte alle Dateien aufgeführt werden, die mit TXT enden und die 2. Spalte mit XML. Hoffe du verstehst, was ich meine.

0
FaTech  08.09.2022, 16:36
@SonyM4

Mach eine Liste txt und eine Liste XML. Die befüllst du, während du die Dateien durchgehst.

Dann hast du da alles drin.

Jetzt kannst du die beiden Listen mit einer for schleife durchlaufen und in einer Datei schreiben

1

Um Ordner in Python automatisch anhand der Namen von Dateien zu erstellen, können Sie die os-Module verwenden. Hier ist ein Beispiel:


import os

# Set the source and target directories
source = "C:\\Users\\example\\files"
target = "C:\\Users\\example\\folders"

# Loop through all files in the source directory
for filename in os.listdir(source):

   # Get the file name without the extension
   name = os.path.splitext(filename)[0]

   # Create the target directory
   os.makedirs(os.path.join(target, name))

   # Move the file to the target directory
   os.rename(os.path.join(source, filename), os.path.join(target, name, filename))

Dieser Code setzt voraus, dass sich die Originaldateien im Verzeichnis C:\Users\example\files befinden und die Dateien in Ordnern im Verzeichnis C:\Users\example\folders gespeichert werden sollen. Sie können diese Pfade entsprechend anpassen.

Hinweis: Stellen Sie sicher, dass Sie die Pfade in Anführungszeichen setzen, wenn sie Leerzeichen enthalten. Zum Beispiel: "C:\\Users\\example\\files"

Ich hoffe, dass dies hilfreich ist.