gpt4 book ai didi

python - copytree(),参数 symlink 和ignore 的作用是什么?

转载 作者:行者123 更新时间:2023-12-01 06:54:04 25 4
gpt4 key购买 nike

我对 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, 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() 会出现问题,并且这些修订旨在处理它。

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

我找到了下面的定义,这超出了我的理解范围:

symlinks (optional) : This parameter accepts True or False, dependingon which the metadata of the original links or linked links will becopied to the new tree.

ignore (optional) : If ignore is given, it must be a callable thatwill receive as its arguments the directory being visited bycopytree(), and a list of its contents, as returned by os.listdir().

最佳答案

这可能不是您正在寻找的,但如果您能够,那么仅使用操作系统的复制功能就可以更轻松地进行编码和理解。这可以通过 python 和 os 库来完成。

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

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

关于python - copytree(),参数 symlink 和ignore 的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58881593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com