在Python中将文件夹中的文件复制到上一级目录

5

我有一个文件夹,里面有一些文件,我想将它们复制到上一级目录(这个文件夹中还有一些我不想复制的文件)。我知道可以使用os.chdir("..")命令将我移动到该目录。但是,我不确定如何将我需要的文件复制到该目录中。非常感谢您的帮助。


更新:

现在我有以下代码:

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

可能是重复的问题:如何在Python中复制文件? - Felix Kling
1个回答

9
shutil 模块可以实现此功能,具体而言是通过 copyfilecopycopy2copytree 函数。参考链接: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']

可以使用以下代码来获取特定文件夹中的.txt文件列表,而不是使用fileList = os.listdir('path/to/source_dir'):


我采纳了你的建议并尝试使用copytree。但不知何故,当我尝试运行它时出现了错误。请查看我在问题下面添加的内容。谢谢,Aaron - Aaron
1
copytree 要求目标目录不存在。 - Kevin Horn
对于你提供的例子,我需要为每个文件名都这样做吗?我看到第5行中添加了文件名。由于我有5个需要复制的文件,那该怎么办呢? - Aaron
是的,这对于任意数量的文件都适用...这就是“for”循环的作用... - Chinmay Kanchi
好的,所以我需要做的就是输入源目录和目的地的路径。然后它就会提取源目录中的所有文件了吗? - Aaron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接