将路径/文件列表复制到目录

时间:2010-10-16 12:03:33

标签: python file-io

我正在做一个练习,其中我有一个文件列表(作为绝对路径给出),如果设置了某种标志,应将其复制到给定目录。这是我复制文件的功能:

def copy_to(paths, dst):
  if not os.path.exists(dst):
    os.makedirs(dst)

  for path in paths:
    shutil.copy(path, dst)

但是,给定的解决方案看起来不同:

def copy_to(paths, dst):
  if not os.path.exists(dst):
    os.makedirs(dst)

  for path in paths:
    basename = os.path.basename(path)     
    shutil.copy(path, os.path.join(dst, basename))

获取路径的基本名称并将其与要复制到的路径连接到这里真正需要吗?

3 个答案:

答案 0 :(得分:3)

根据当前manual,不需要:

  

shutil.copy(src,dst)复制文件   src到文件或目录dst。如果   dst是一个目录,一个带有的文件   创建与src相同的基本名称(或   在目录中覆盖)   指定。权限位被复制。   src和dst是给出的路径名   字符串。

它表示,如果dst是一个目录,copy()会在src上放置一个与dst相同的基本名称的文件

答案 1 :(得分:1)

不需要。 documentation说:

  

将文件src复制到文件或目录dst。如果dst是目录,则在指定的目录中创建(或覆盖)与src具有相同基本名称的文件。

给定的解决方案明确地执行此操作,而不是让shutil.copy隐式执行此操作。这是唯一的区别。

答案 2 :(得分:1)

已经回答,但我注意到了几点。在这里使用dir遮蔽了内置目录。另外,什么是os.path.makedirs?在我的python(2.6)上,这给出了

>>> os.path.makedirs
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'makedirs'

你的意思是os.makedirs吗?