2010-06-01 54 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

相关问题