def hard_link_or_raise_exception(src, dst): if not path.exists(dst): link(src, dst) return dst elif path.isfile(dst): raise FileAlreadyExists(dst) elif path.isdir(dst): dst_abspath = path.join(dst, path.basename(src)) if path.exists(dst_abspath): raise FileAlreadyExists(dst_abspath) link(src, dst_abspath) return dst_abspath
def hard_link_and_override(src, dst): if not path.exists(dst): link(src, dst) elif path.isfile(dst): remove(dst) link(src, dst) elif path.isdir(dst): link(src, path.join(dst, path.basename(src)))