2010-06-01 12 views
5

Ich habe einen Ordner mit ein paar Dateien, die ich ein Verzeichnis nach oben kopieren möchte (dieser Ordner hat auch einige Dateien, die ich nicht kopieren möchte). Ich weiß, dass es den Befehl os.chdir ("..") gibt, um mich in das Verzeichnis zu verschieben. Ich bin mir jedoch nicht sicher, wie ich die benötigten Dateien in dieses Verzeichnis kopieren soll. Jede Hilfe würde sehr geschätzt werden.Kopieren Sie Dateien im Ordner nach oben ein Verzeichnis in Python


UPDATE:

Das ist, was ich habe jetzt:

from shutil import copytree, ignore_patterns 

copytree("/Users/aaron/Desktop/test/", "/Users/aaron/Desktop/", ignore=ignore_patterns('*.py', '*.txt')) 

ich die folgende Störung erhalte:

Traceback (most recent call last): 
    File "update.py", line 61, in <module> 
    copytree("/Users/aaron/Desktop/test/", "/Users/aaron/Desktop/", ignore=ignore_patterns('*.py', '*.txt')) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/shutil.py", line 146, in copytree 
    os.makedirs(dst) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/os.py", line 157, in makedirs 
    mkdir(name, mode) 
OSError: [Errno 17] File exists: '/Users/aaron/Desktop/' 
+0

möglich Duplikat [Wie kopiere ich eine Datei in Python?] (Http://stackoverflow.com/questions/123198/how -do-ich-kopiere-eine-Datei-in-Python) –

Antwort

8

Das shutil Modul kann dies tun, insbesondere die copyfile, copy, copy2 und copytree Funktionen. http://docs.python.org/library/shutil.html

Sie wollen wahrscheinlich etwas in dieser Richtung:

import os 
import shutil 

fileList = os.listdir('path/to/source_dir') 
fileList = ['path/to/source_dir/'+filename for filename in fileList] 

for f in fileList: 
    shutil.copy2(f, 'path/to/dest_dir/') 

Sie können natürlich einige Dateinamen aus während des Gesprächs zu os.listdir() filtern. Zum Beispiel

fileList = [filename for filename in os.listdir('path/to/source_dir') if filename[-3] is '.txt'] 

statt fileList = os.listdir('path/to/source_dir') zu bekommen nur die .txt Dateien

+0

Ich nahm Ihren Rat und versuchte mit Copytree. Aus irgendeinem Grund erhalte ich einen Fehler, wenn ich versuche, es auszuführen. Bitte sehen Sie, was ich unter meiner Frage hinzugefügt habe. Danke, Aaron – Aaron

+0

'copytree' erfordert, dass das Zielverzeichnis noch nicht existiert. –

+0

Für das Beispiel, das Sie gaben, müsste ich dies für jeden Dateinamen tun? Ich sehe in Zeile 5 den Dateinamen hinzufügen. Da ich 5 Dateien habe, die kopiert werden müssen, wie würde das funktionieren. – Aaron

Verwandte Themen