2010-06-01 10 views
5

Tengo una carpeta con algunos archivos que me gustaría copiar un directorio (esta carpeta también tiene algunos archivos que no quiero copiar). Sé que existe el comando os.chdir ("..") para moverme al directorio. Sin embargo, no estoy seguro de cómo copiar esos archivos que necesito en este directorio. Cualquier ayuda sería muy apreciada.Copiar archivos en la carpeta un directorio en python


ACTUALIZACIÓN:

Esto es lo que tengo ahora:

from shutil import copytree, ignore_patterns 

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

estoy consiguiendo el error siguiente:

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

posible duplicado de [¿Cómo puedo copiar un archivo en Python?] (Http://stackoverflow.com/questions/123198/how -do-i-copy-a-file-in-python) –

Respuesta

8

El módulo shutil puede hacer esto, en concreto el copyfile, copy, copy2 y copytree funciones. http://docs.python.org/library/shutil.html

es probable que desee algo en este sentido:

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/') 

Por supuesto, puede filtrar algunos nombres de archivo durante la llamada a os.listdir(). Por ejemplo,

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

en lugar de fileList = os.listdir('path/to/source_dir') para obtener sólo los archivos .txt

+0

Tomé su consejo y traté de usar copytree. Por algún motivo, recibo un error cuando intento ejecutarlo. Por favor, mira lo que agregué en mi pregunta. Gracias, Aaron – Aaron

+0

'copytree' requiere que el directorio de destino no exista. –

+0

Por el ejemplo que dio, ¿tendría que hacer esto para cada nombre de archivo? Veo en la línea 5 que agregas el nombre del archivo. Como tengo 5 archivos que deben copiarse, ¿cómo funcionaría? – Aaron

Cuestiones relacionadas