2015-08-04 11 views
13

ist hier unten Code, dieverschieben und ersetzen, wenn gleicher Dateiname bereits in Python existiert

import shutil 
import os 
src = 'scrFolder' 
dst = './dstFolder/' 
filelist = [] 

files = os.listdir(src) 
for filename in files: 
filelist.append(filename) 
fullpath = src + '/' + filename 
shutil.move(fullpath, dst) 

einzelne Datei verschieben und ersetzen Wenn ich denselben Befehl ausführen und Bewegen-Datei, die in dst folder existierte bereits i shutil.Error: Destination path './dstFolder/file.txt' already exists bin immer wie bewegen und ersetzen, wenn gleicher Dateiname bereits existiert

Antwort

24

wenn Sie den vollständigen Pfad zum Ziel angeben (nicht nur das Verzeichnis) zu tun, dann wird shutil.move überschreibt eine vorhandene Datei:

shutil.move(os.path.join(src, filename), os.path.join(dst, filename)) 
+3

funktioniert das auch auf einem Netzlaufwerk, ich habe einen vollständigen Pfad zu der Datei, aber es ist nicht überladen, Beenden mit "Datei existiert" – user1767754

+0

@ user1767754 Ich würde nur erwarten, dass das passiert, wenn die Quelle eine symbolische Verbindung ist . Vielleicht könnten Sie eine Folgefrage stellen? – ecatmur

+0

@ecatmur Ich habe das selbe selbstständig getestet. 1. Wenn das Zielverzeichnis bereits den Quelldateinamen hat und Sie 'shuthil.move (src_filename, dst_dirname) 'haben, wird ein Fehler ausgelöst.' Fehler: Zielpfad' dst_dirname/src_filename 'existiert bereits.' 2. Wie auch immer, wenn Sie 'dst_filename = os.path.join (dst_dirname, os.path.basename (src_filename)); shutil.move (src_filename, dst_filename) '-> dann wird keine Ausnahme ausgelöst. –

Verwandte Themen