2017-06-13 2 views
-1

Ich möchte Dateien mit einer bestimmten Dateierweiterung aus einem Verzeichnis kopieren und in ein anderes Verzeichnis einfügen. Ich habe versucht zu suchen und fand Code der gleiche wie ich tun, aber es scheint nichts zu tun, jede Hilfe wäre toll.Kopieren von Dateien in Python

import shutil 
import os 
source = "/tmp/folder1/" 
destination = "/tmp/newfolder/" 
for files in source: 
    if files.endswith(".txt"): 
     shutil.move(files,destination) 
+0

Zusätzlich können Sie mehr als ein Ziel haben, wenn ich die gleichen Dateien in zwei verschiedene Verzeichnisse kopieren möchte? – gcmtb

Antwort

0

Ich denke, das Problem ist Ihre For-Schleife. Sie durchlaufen tatsächlich die Zeichenfolge "tmp/folder1 /", anstatt die Dateien im Ordner zu durchlaufen. Was Ihre for-Schleife tut, geht Buchstabe für Buchstabe durch die Zeichenfolge (t, m, p usw.).

Was Sie wollen, ist eine Schleife über eine Liste von Dateien im Quellordner. Wie das funktioniert, ist hier beschrieben: How do I list all files of a directory?.

Dort können Sie die Dateinamen durchlaufen, auf ihre Erweiterung testen und sie genau so verschieben, wie Sie es gezeigt haben.

+0

Das war genau das, was ich bekam, danke für den Link, das os.listdir fehlend, fügte das zur Quelle hinzu und funktioniert gut :-) – gcmtb

0

Ihre "für Datei in Quelle" wählen Sie ein Zeichen nach dem anderen aus Ihrem String "source" (das für weiß nicht, dass die Quelle ein Pfad ist, für ihn ist es nur ein einfaches str Objekt).

Sie haben verwenden os.listdir:

import shutil 
import os 

source = "source/" 
destination = "dest/" 
for files in os.listdir(source): #list all files and directories 
    if os.path.isfile(os.path.join(source, files)): #is this a file 
     if files.endswith(".txt"): 
      shutil.move(os.path.join(source, files),destination) #move the file 

os.path.join verwendet wird, ein Verzeichnis und einen Dateinamen zu verbinden (einen vollständigen Pfad haben).