我想将某个文件复制到指定的路径。此指定的路径具有许多目录的层次结构,这些目录在事先不存在并且需要在复制期间创建。
我尝试了shutil.copy*
个函数,但它们似乎都要求预先创建目标路径上的目录。
是否有任何功能可以根据需要设置这些目录并复制文件?
使用示例:
copy_file('resources/foo.bar', expanduser('~/a/long/long/path/foo.bar'))
答案 0 :(得分:5)
您可以使用os.makedirs
递归创建所需的树枝,然后使用shutil.copy
。
target_dir = os.path.expanduser('~/a/long/long/path')
os.makedirs(target_dir)
shutil.copy('resources/foo.bar', os.path.join(target_dir, 'foo_bar'))
这样,您可以分解可管理任务(创建然后复制)中的问题,这可以让您处理目录创建崩溃的情况(遵循'显式优于隐式')。