2010-06-01 28 views
5

我有一個文件夾,我想複製一個目錄(這個文件夾也有一些我不想複製的文件)。我知道有os.chdir(「..」)命令將我移動到目錄。但是,我不知道如何將我需要的這些文件複製到此目錄中。任何幫助將不勝感激。複製python文件夾中的一個目錄


UPDATE:

這是我現在有:

from shutil import copytree, ignore_patterns 

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

我收到以下錯誤:

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

可能重複http://stackoverflow.com/questions/123198/how -o-copy-a-file-in-python) – 2010-06-01 16:51:52

回答

8

shutil模塊可以做到這一點,特別是copyfile,copy,copy2copytree功能。 http://docs.python.org/library/shutil.html

你可能想沿着這些路線的東西:

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

當然你可以調用os.listdir()時過濾一些文件名了。例如,

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

,而不是fileList = os.listdir('path/to/source_dir')得到公正的.txt文件

的[我如何複製一個文件在python?](
+0

我接受了你的建議並嘗試使用copytree。出於某種原因,我在嘗試運行時出現錯誤。請看看我在我的問題下添加了什麼。謝謝Aaron – Aaron 2010-06-01 18:57:17

+0

'copytree'要求目標目錄不存在。 – 2010-06-01 22:29:29

+0

對於你給的例子,我需要爲每個文件名做這個嗎?我在第5行看到你添加了文件名。由於我有5個需要複製的文件,這將如何工作。 – Aaron 2010-06-01 23:44:07

相關問題