2017-01-26 9 views
1

Ich versuche ein Skript (Python 2.7) zu schreiben, das einen regulären Ausdruck verwendet, um bestimmte Dateien in einem Ordner zu identifizieren und in einen anderen Ordner zu verschieben. Wenn ich das Skript ausführe, wird der Quellordner jedoch in den Zielordner verschoben und nicht nur in die darin enthaltenen Dateien.Python-Skript zum Verschieben bestimmter Dateien von einem Ordner in einen anderen

import os, shutil, re 

src = "C:\\Users\\****\\Desktop\\test1\\" 
#src = os.path.join('C:', os.sep, 'Users','****','Desktop','test1\\') 
dst = "C:\\Users\\****\\Desktop\\test2\\" 
#dst = os.path.join('C:', os.sep, 'Users','****','Desktop','test2') 

files = os.listdir(src) 
#regexCtask = "CTASK" 
print files 
#regex =re.compile(r'(?<=CTASK:)') 


files.sort() 

#print src, dst 

regex = re.compile('CTASK*') 

for f in files: 
    if regex.match(f): 
     filescr= os.path.join(src, files) 
     shutil.move(filesrc,dst) 
     #shutil.move(src,dst) 

Also im Grunde gibt es Dateien in „Test1“ Ordner, den ich auf „test2“ verschieben möchten, aber nicht alle Dateien, nur diejenigen, die „CTASK“ am Anfang enthalten.

Der **** im Pfad ist, meine Arbeit Benutzernamen zu schützen.

Sorry, wenn es chaotisch ist, versuche ich immer noch ein paar Dinge aus.

+1

' os.path.join (src, files) 'sollte eine Ausnahme erzeugen. (Angenommen, alle Dateien in der Quelle beginnen mit "CTAS" plus 0 oder mehr "K" -Zeichen, was wahrscheinlich nicht das ist, wonach Sie eigentlich suchen sollten.) – glibdud

Antwort

1

Sie müssen auf jeder Schleifeniterationslatenzzeit Pfad genaue Datei (f) zu filescr Variablen zugewiesen werden, aber nicht Weg zu files (files - ist ein list!)

Try Code unten

import os 
from os import path 
import shutil 

src = "C:\\Users\\****\\Desktop\\test1\\" 
dst = "C:\\Users\\****\\Desktop\\test2\\" 

files = [i for i in os.listdir(src) if i.startswith("CTASK") and path.isfile(path.join(src, i))] 
for f in files: 
    shutil.copy(path.join(src, f), dst) 
+0

Großartig, das hat funktioniert! Können Sie bitte genau erklären, was das Pfadmodul in diesem Fall macht? – R2DeeTard

+1

'path.join()' verwendet 'path_to_folder' +' file_name' = 'path_to_file'. 'path.isfile()' - nur um zu überprüfen, dass das Element in 'listdir (src)' eine Datei ist, aber kein Ordner - Sie können diese Bedingung bei Bedarf entfernen – Andersson

+0

Noch eine kurze Frage. Wie würde ich das auf Ordner anstatt nur auf Dateien anwenden? bearbeiten: nieimind. path.isdir() ist was ich brauchte. – R2DeeTard

Verwandte Themen