Kopieren von Files

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
mgm841
User
Beiträge: 19
Registriert: Montag 7. Mai 2018, 12:15

Hallo zusammen,

ich würde mich freuen, wenn jmd mir kurz behilflich sein könnte. Ich habe ein Skript geschrieben, wo Files aus Directory aus dem letzten Tag gefiltert werden, jetzt möchte ich genau diese kopieren, leider funktioniert das nicht. Mein Code sieht wie folgt aus:
import os
from os import walk
import time
import datetime
from datetime import date, timedelta
import zipfile
import io
import shutil

src = 'K:\\Userfiles\\Ucar\\WT_HB-10-App'
dest = 'K:\\Userfiles\\Ucar\\UNZIP'

date1 = date.today() - timedelta(2)



for root, dirs, files in os.walk(src):

for file in files:
if file.endswith('zip'):
x = file[-18:-8]
d = date1.strftime('%Y-%m-%d')

if x==d:
shutil.copyfile(file, dest)
Als Fehler wird ausgegeben:

Traceback (most recent call last):
File "C:\Python37\datetime_finder.py", line 26, in <module>
shutil.copyfile(file, dest)
File "C:\Python37\lib\shutil.py", line 120, in copyfile
with open(src, 'rb') as fsrc:
FileNotFoundError: [Errno 2] No such file or directory: 'getContents_2019-01-28.csv.zip'

Wenn ich mit Print(file ) teste funktioniert das, es werden alle Files von gestern angezeigt. Wie kriege ich das kopiert ?
Benutzeravatar
__blackjack__
User
Beiträge: 14040
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@mgm841: Das ”funktioniert” auch mit `print()` nicht, denn auch da wird Dir nur ``getContents_2019-01-28.csv.zip`` ausgegeben. Das würde nur funktionieren wenn es diese Datei im aktuellen Arbeitsverzeichnis gäbe. Das liegt aber irgendwo unter ``K:\\Userfiles\\Ucar\\WT_HB-10-App``, oder konkreter in dem Pfad der an den Namen `root` gebunden wird. Diese beiden Informationen musst Du mit `os.path.join()` verbinden, *dann* hast Du den kompletten Pfad zur Datei.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Sirius3
User
Beiträge: 18269
Registriert: Sonntag 21. Oktober 2012, 17:20

Einfacher geht das Ganze mit pathlib. Einbuchstabige Variablennamen sind immer schlecht, Abkürzungen vermeiden. Das finden des Zeitstempels durch Indexzugriff ist nicht sehr stabil. Gibt es nicht eine andere Möglichkeit?

Code: Alles auswählen

from pathlib import Path
from datetime import date, timedelta

source_path = 'K:/Userfiles/Ucar/WT_HB-10-App'
destination_path = 'K:/Userfiles/Ucar/UNZIP')

search_date = date.today() - timedelta(2)
pattern = '**/*{:%Y-%m-%d}????.zip'.format(search_date)

for filename in Path(source_path).rglob(pattern):
    shutil.copyfile(filename, destination_path )
Antworten