File in einen neuen Ordner kopieren? (PyCharm)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Shallty
User
Beiträge: 3
Registriert: Donnerstag 2. August 2018, 22:55

Guten Abend,
ich komme gerade bei meinem Code nicht weiter und weiß mir nicht zu helfen :/
Mein Programm läuft bisher durch einen bestimmten Stamm Ordner, anschließend geht er alle Unterordner durch und schreibt halt auch alles mit bzw. die Ordner Namen, Unterordner etc. Als letztes schaut er dann in den untersten Ordnern nach Dateien die mit .txt enden.

Was ich nun tun will: Ich will diese .txt Dateien in einen Ordner kopieren der neu erstellt werden soll. Ich hab schon sehr viele Befehle gefunden aber verzweifle einfach daran. Ich hab es mit shutil.copyfile hier versucht aber ich muss denke ich den Pfad in den Klammern angeben, allerdings habe ich keine Ahnung wie man den fand von den .txt Dateien dann ganz kriegen kann und dadurch in einen neu erstellten ordner kopieren kann x.x

Mein Code ist:

import os, shutil

for folderName, subfolders, filenames in os.walk('C:\\Users\\Shallty\\Desktop\\Programmieren'):
print('Der aktuelle Ordner ist: ' + folderName);

for subfolder in subfolders:
print('Unterordner von ' + folderName + ' -> ' + subfolder);

for filename in filenames:

if filename[-1] == 't' and filename[-2] == 'x' and filename[-3] == 't' and filename[-4] == '.':
print('Die Datei ist in ' + folderName + ' -> ' + filename)
shutil.copyfile(filename, 'C:\\Users\\Shallty\\Desktop\\Programmieren\\Lala')


print('')

------

Als Output kriege ich z.B.

with open(src, 'rb') as fsrc:
FileNotFoundError: [Errno 2] No such file or directory: 'Test1.txt'
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Das pathlib-Modul bietet alles, was man so zum Verarbeiten von Pfaden braucht, z.B. path.suffix um die Endung zu prüfen.

Einfacher geht es aber mit dem '**'-Pattern um alle Pfade zu durchsuchen:

Code: Alles auswählen

import pathlib
import shutil

SOURCE_PATH = 'C:\\Users\\Shallty\\Desktop\\Programmieren'
DESTINATION_PATH = 'C:\\Users\\Shallty\\Desktop\\Programmieren\\Lala'

folder = pathlib.Path(SOURCEPATH)
for filename in folder.glob('**/*.txt'):
    print('Datei ist in {0.parent} -> {0.name}'.format(filename))
    shutil.copy(filename, DESTINATION_PATH)
Antworten