【问题标题】:Copy files in folder up one directory in python在python中将文件夹中的文件复制到一个目录
【发布时间】:2010-06-01 16:50:33
【问题描述】:

我有一个文件夹,其中包含一些我想复制到一个目录的文件(该文件夹也有一些我不想复制的文件)。我知道有 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 file copy


【解决方案1】:

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

而不是 fileList = os.listdir('path/to/source_dir') 只获取 .txt 文件

【讨论】:

  • 我听取了您的建议并尝试使用 copytree。出于某种原因,当我尝试运行它时出现错误。请查看我在问题下添加的内容。谢谢你,亚伦
  • copytree 要求目标目录不存在。
  • 对于您给出的示例,我需要为每个文件名执行此操作吗?我在第 5 行看到您添加了文件名。由于我有 5 个需要复制的文件,这将如何工作。
  • 是的,这适用于任意数量的文件...这就是 for 循环的用途...
  • 好的,所以我需要做的就是输入源目录和目标的路径。它会拉取源目录中的所有文件吗?
猜你喜欢
  • 1970-01-01
  • 2016-06-06
  • 1970-01-01
  • 2015-05-05
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 2015-10-17
  • 2014-07-25
相关资源
最近更新 更多