Python copytree(),symlink和ignore的参数是什么?

Python copytree(),symlink和ignore的参数是什么?,python,directory,symlink,ignore,copytree,Python,Directory,Symlink,Ignore,Copytree,我对Python很陌生,所以请容忍我。 我想写些东西把文件从一个目录复制到另一个目录。 我发现了以下问题和答案: 在那里,我找到了这个答案: def copytree(src, dst, symlinks=False, ignore=None): for item in os.listdir(src): s = os.path.join(src, item) d = os.path.join(dst, item) if os.path.isdir(s):

我对Python很陌生,所以请容忍我。 我想写些东西把文件从一个目录复制到另一个目录。 我发现了以下问题和答案:

在那里,我找到了这个答案:

def copytree(src, dst, symlinks=False, ignore=None):
for item in os.listdir(src):
    s = os.path.join(src, item)
    d = os.path.join(dst, item)
    if os.path.isdir(s):
        shutil.copytree(s, d, symlinks, ignore)
    else:
        shutil.copy2(s, d)
后来有人将其添加到中以解决某些问题:

#!/usr/bin/python
import os
import shutil
import stat
def copytree(src, dst, symlinks = False, ignore = None):
  if not os.path.exists(dst):
    os.makedirs(dst)
    shutil.copystat(src, dst)
  lst = os.listdir(src)
  if ignore:
    excl = ignore(src, lst)
    lst = [x for x in lst if x not in excl]
  for item in lst:
    s = os.path.join(src, item)
    d = os.path.join(dst, item)
    if symlinks and os.path.islink(s):
      if os.path.lexists(d):
        os.remove(d)
      os.symlink(os.readlink(s), d)
      try:
        st = os.lstat(s)
        mode = stat.S_IMODE(st.st_mode)
        os.lchmod(d, mode)
      except:
        pass # lchmod not available
    elif os.path.isdir(s):
      copytree(s, d, symlinks, ignore)
    else:
      shutil.copy2(s, d)
我知道当目标目录已经存在时,shutil.copytree()会出现问题,这些修订就是为了解决这个问题

我的问题是关于符号链接和忽略参数,我看到了这些参数,但不了解它们的作用以及如何解决问题

我能够找到下面的定义,这些定义让我难以理解:

符号链接(可选):此参数接受True或False,具体取决于 原始链接或链接的元数据将在其上显示 复制到新树

ignore(可选):如果给定ignore,则它必须是 将接收正在访问的目录作为其参数 copytree()及其内容列表,由os.listdir()返回


如果您能帮我解决这一问题,我将不胜感激。

这可能不是您想要的,但如果您能够做到这一点,只需使用操作系统的复制功能,就可以更容易地编写代码和理解。这可以从python操作系统库中完成

def copytree(src,dst):
    os.system("cp -r "+src+" "+dst)

本例假设您使用的是linux,但它可以在任何操作系统上运行,您只需将“cp-r”切换为本地复制命令。

我想我在某个地方读到过,这不会跨不同的驱动器复制。我的目的是将一些东西从pc传输到闪存驱动器。此外,我假设“”将使用粘贴命令填充,或者“”只是这样做。在这种情况下,只要您使用完整的文件路径,包括装入点,我看不出它为什么不能工作,因为操作系统就是这样复制的。例如:f:\Desktop\backupme.doc d:\backupSorry我只回答了第一部分的“”,因此当python构造字符串时,文件路径之间有cp所期望的空间。对于windows,我相信您会希望使用“xcopy”+src+“”+dst,但我最终尝试使用您的方式,但这一次只复制一个文件,无法实现上述代码的功能,因为它会复制整个文件夹或目录。非常感谢您坚持我的观点。这真是不可思议!下面是每次它实际看到要传输的文件时都会提示我使用的内容:“code”def copytree(directory1,directory2):os.system(“xcopy/p/s%s%s”%(directory1,directory2))“code”