copytree(),哪些参数是symlink并忽略?

我对Python很陌生,所以请多多包涵。 我正在寻找写一些东西来将文件从一个目录复制到另一个目录的方法。 我发现以下问题和解答:Here

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

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,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)
    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,ignore)
    else:
      shutil.copy2(s,d)

我知道目标目录已经存在时,shutil.copytree()会出现问题,而这些修订本是要处理的。

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

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

  

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

     

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

任何帮助我解决这个问题的人,将不胜感激。

sha00000000 回答:copytree(),哪些参数是symlink并忽略?

这可能不是您要查找的内容,但是如果可以的话,简单地使用操作系统的copy函数将更容易编码和理解。这可以通过os库中的python完成。

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

此示例假定您使用的是Linux,但是它可以在任何操作系统中使用,只需将“ cp -r”切换为本地复制命令即可。

本文链接:https://www.f2er.com/3093772.html

大家都在问