copy_tree引发" [Errno 2]没有这样的文件或目录"为目的地

时间:2017-07-14 09:06:22

标签: python

我有一个python服务,在某些时候,会将目录从一个位置复制到另一个位置。当服务首次运行时,会引发错误"[Errno 2] No such file or directory"报告目标作为问题。

[Errno 2] No such file or directory: u'/opt/app/Gemfile.lock'

我没想到目的地在那里,因为我还没有复制它。阅读distutils的文档,它说如果一条路径不存在,它将为你创造。

#! /usr/bin/env python
import distutils.core
import os

files = []
file = {}
file['source'] = "/origin/folder"
file['destination'] = "/destionation/folder"
files.append(file)

def copy_files(files, logger):
    for file in files:
        if file['source'].startswith('/'):
            source = os.path.join(deployment.archive_dir, file['source'][1:])
        else:
            source = os.path.join(deployment.archive_dir, file['source'])
        if os.path.isdir(source):
            distutils.dir_util.copy_tree(source, file['destination'])
        else:
            if not os.path.isdir(file['destination']):
                distutils.dir_util.mkpath(file['destination'])
            distutils.file_util.copy_file(source, file['destination'])

copy_files(files)

这是投掷线:

distutils.dir_util.copy_tree(source, file['destination'])

1 个答案:

答案 0 :(得分:-1)

问题是,你没有先检查文件['destination'],因为它不存在,导致错误提升。因此,除了检查is.dir(source)之外,您还应该检查is.dir(file ['destination'])。