- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Python distutils.dir_util.copy_tree
将一个目录的内容复制到另一个目录,并更新目标中的文件(如果它们已更改)。我正在使用选项:
copy_tree(src, dst, preserve_symlinks=1, update=1)
这适用于初始副本,但在所有后续副本上都失败:
FileExistsError: [Errno 17] File exists: 'file1' -> 'test2/file2'
file1
是指向 file2
的符号链接(symbolic link)。
我不需要它来更新符号链接(symbolic link)。如果它第二次忽略它们,或者盲目地覆盖它们,那也没关系。但是,实际上,似乎不可能在更新模式下复制包含符号链接(symbolic link)的目录。
有什么方法可以使用这个工具来做到这一点吗?是否有更好的工具可供使用,还是我需要创建自己的工具?
平台详情:
CentOS Linux 7.5 python Python 3.6.6
最佳答案
这是我的尝试:distutils.dir_util.copy_tree
的垫片使用 monkeypatching os.symlink
。
import contextlib
import os
import distutils.dir_util
@contextlib.contextmanager
def monkeypatch(object, name, patch):
value_orig = getattr(object, name)
setattr(object, name, patch)
yield object
setattr(object, name, value_orig)
def copy_tree(src, dst, **kwargs):
stdlib_symlink = os.symlink
def _symlink(src, dst, **kwargs):
try:
stdlib_symlink(src, dst, **kwargs)
except FileExistsError as err:
pass
with monkeypatch(distutils.dir_util.os, 'symlink', _symlink):
distutils.dir_util.copy_tree(src, dst, **kwargs)
此版本的 _symlink
函数将忽略符号链接(symbolic link)尝试中发生的任何错误。您可以编写自己的代码来重新创建符号链接(symbolic link),例如
def _symlink(src, dst, **kwargs):
try:
stdlib_symlink(src, dst, **kwargs)
except FileExistsError as err:
os.remove(dst)
stdlib_symlink(src, dst)
关于如果有符号链接(symbolic link),Python distutils copy_tree 无法更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53090360/
我使用的是 Python 2.6。我使用dir_util.copy_tree函数复制文件,想在命令行查看复制了哪些文件。但是,它永远不会打印出来,即使我指定了 verbose=1!这是一个已知的错误,
我做了一个小应用程序,基本上在某个时候我调用 distutils.dir_util.copy_tree 将文件复制到目的地。谁能帮我链接一个基本的进度条,例如: [======]50% 复制过程...
我正在尝试使用 Python distutils.dir_util.copy_tree 将一个目录的内容复制到另一个目录,并更新目标中的文件(如果它们已更改)。我正在使用选项: copy_tree(s
我正在尝试将文件夹删除后复制到另一个文件夹: for i in range(0,3): try: dir_util.remove_tree("D:/test2") # sh
我是一名优秀的程序员,十分优秀!