我有一个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'])
答案 0 :(得分:-1)
问题是,你没有先检查文件['destination'],因为它不存在,导致错误提升。因此,除了检查is.dir(source)之外,您还应该检查is.dir(file ['destination'])。