📅  最后修改于: 2023-12-03 15:19:08.516000             🧑  作者: Mango
在Python中,使用shutil模块可以非常简单地复制文件和目录。但是,在复制文件时,如果目标目录的中间目录不存在,会导致复制失败。因此,我们需要在复制文件时自动创建中间目录。
为了解决这个问题,我们可以使用os模块中的makedirs函数自动创建中间目录。具体实现如下:
import shutil
import os
def copy_file(src, dst):
if os.path.isdir(dst):
dst = os.path.join(dst, os.path.basename(src))
os.makedirs(os.path.dirname(dst), exist_ok=True)
shutil.copy2(src, dst)
这个函数接受两个参数:源文件src和目标文件dst。首先判断目标文件是否为目录,如果是,则在目标目录下创建与源文件同名的文件;如果不是,则直接使用目标文件路径。接着使用os.path.dirname获取目标文件的目录路径,并调用os.makedirs创建中间目录(如果不存在的话)。最后使用shutil.copy2复制文件和文件的元数据。
copy_file('/path/to/source/file.txt', '/path/to/dest/dir/newfile.txt')
这将把文件/path/to/source/file.txt复制到目录/path/to/dest/dir/下,并命名为newfile.txt。如果dest目录不存在,将自动创建。如果dest目录存在,但没有newfile.txt这个文件,则会创建这个文件并复制源文件的内容和元数据。
在Python中,复制文件和目录很容易,但需要注意的是目标目录的中间目录可能不存在。为了解决这个问题,我们可以使用os.makedirs创建中间目录并在此基础上使用shutil.copy2复制文件和文件的元数据。