2010-06-01 30 views
5

Bir dizini kopyalamak istediğim birkaç dosya içeren bir klasörüm var (bu klasörde kopyalamak istemediğim bazı dosyalar da var). Beni o dizine götürmek için os.chdir ("..") komutunun olduğunu biliyorum. Ancak, bu dizinde ihtiyacım olan dosyaları nasıl kopyalayacağımı bilmiyorum. Herhangi bir yardım büyük takdir edilecektir.Klasördeki dosyaları python'da bir dizine kopyalayın


GÜNCELLEME:

from shutil import copytree, ignore_patterns 

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

aşağıdaki hatayı alıyorum:

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

olası yinelenen http://stackoverflow.com/questions/123198/how -do-i-kopya-bir-içinde-python) –

cevap

8

shutil modül yapabiliriz, özellikle bu şimdi ne var

copyfile, copy, copy2 ve copytree işlevleri. Elbette os.listdir() yapılan çağrı sırasında bazı dosya isimlerini filtreleyebilirsiniz

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

: http://docs.python.org/library/shutil.html

Muhtemelen bu satırlar boyunca bir şey istiyorum. Örneğin,

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

yerine fileList = os.listdir('path/to/source_dir') sadece .txt dosyaları almak için

[Python bir dosyayı kopyalamak nasıl?] (içinde
+0

Tavsiye aldım ve copytree kullanarak çalıştı. Nedense, çalıştırmaya çalıştığımda bir hata alıyorum. Lütfen sorumu altında eklediklerimi gör. Teşekkür ederim, Aaron – Aaron

+0

'copytree', hedef dizinin zaten mevcut olmadığını gerektirir. –

+0

Verdiğiniz örnekte, her dosya adı için bunu yapmalı mıyım? 5. satırda dosya adını ekledim. Kopyalanması gereken 5 dosyam olduğu için bu nasıl çalışırdı. – Aaron

İlgili konular