0
点赞
收藏
分享

微信扫一扫

所以 shutil.copytree 没办法将文件添加到已经存在的文件夹中

shutil.copytree 是一个 Python 模块中的函数,用于递归地复制源目录及其所有子目录和文件到目标目录。然而,如果目标目录已经存在,copytree() 函数会引发 FileExistsError 异常²。

要解决这个问题,你可以考虑以下两种方法:

  1. 覆盖已存在的目录:首先,你可以使用 shutil.rmtree() 函数删除目标目录,然后再执行复制操作。这样,即使目标目录已存在,也能成功复制。
  2. 自定义 copytree 实现:你可以直接修改 copytree 的实现,添加一个判断。例如,在 copytree 中找到 os.makedirs(dst) 这一行,加入以下判断:

if not os.path.exists(dst):
    os.makedirs(dst)

这样就能避免目标目录已存在的问题了¹³.


def main():
    today = datetime.date.today()
    DayBeforeYest = today - datetime.timedelta(days=2)
    yest = today - datetime.timedelta(days=1)

    DayBeforeYest = DayBeforeYest.strftime("%Y-%m-%d")
    path_DayBeforeYest = os.path.join(path, DayBeforeYest)

    yest = yest.strftime("%Y-%m-%d")
    path_yest = os.path.join(path, yest)

    # 复制来源文件夹的全部内容 添加到目标文件夹 但不删除目标文件夹其他内容
    for file in os.listdir(path_DayBeforeYest):
        path_file = os.path.join(path_DayBeforeYest, file)
        shutil.copy(path_file, path_yest)


https://blog.51cto.com/u_16055028/6476686

https://blog.51cto.com/u_16055028/6475844

重命名文件 os.rename

移动文件 shutil.move

复制文件 shutil.copy

另存文件(复制+重命名) shutil.copy


shutil.copy() 是 Python 中用于文件拷贝的函数。让我为您解释一下它的参数:

  1. src:这是源文件的路径或文件对象。您可以传递一个字符串形式的路径名,也可以传递一个已经打开的文件对象。源文件是您要复制的文件。
  2. dst:这是目标文件的路径或文件夹路径。同样,您可以传递一个字符串形式的路径名,或者一个已经打开的文件夹对象。目标文件是您希望将源文件复制到的位置。
  • 如果 dst 是一个文件夹路径,那么 shutil.copy() 将使用源文件的基准文件名在目标文件夹中创建一个新文件。
  • 如果 dst 是一个已存在的文件,它将被替换为源文件的内容。
  1. follow_symlinks(可选):这是一个布尔值,默认为 True。如果设置为 True,并且源文件是一个符号链接,那么目标文件将成为源文件所指向的文件的一个副本。如果设置为 False,则目标文件将成为一个新的符号链接,而不是拷贝源文件所指向的内容。

总之,shutil.copy() 用于将文件从源路径复制到目标路径,并返回新创建文件的路径。如果您希望保留所有原有的元数据(例如文件的创建和修改时间),请改用 shutil.copy2()。¹²³

希望这对您有帮助!如果您还有其他问题,欢迎继续提问。🙂



使用 shutil.copytree() 可以递归地将源目录及其所有子目录和文件复制到目标目录中。如果目标目录已经存在,copytree() 函数会引发 FileExistsError 异常。如果您想要覆盖已经存在的目录,可以先使用 shutil.rmtree() 函数删除目标目录,然后再执行复制操作².

以下是使用 shutil.copytree() 的示例代码:

import shutil

# 源目录
src_directory = '/path/to/source_directory'

# 目标目录(已经存在的目录)
existing_directory = '/path/to/existing_directory'

try:
    # 将源目录的内容复制到已经存在的目标目录中
    shutil.copytree(src_directory, existing_directory)
    print(f"成功将 {src_directory} 复制到 {existing_directory} 中。")
except FileExistsError:
    print(f"{existing_directory} 已经存在,请先删除目标目录或选择其他目标路径。")
except Exception as e:
    print(f"复制过程中出现错误:{e}")

请注意:

  • src_directory 是您要复制的源目录的路径。
  • existing_directory 是已经存在的目标目录的路径。
  • 如果目标目录已经存在,您需要处理该情况,例如删除目标目录或选择其他目标路径。

所以 shutil.copytree 没办法将文件添加到已经存在的文件夹中

举报

相关推荐

0 条评论