Home | History | Annotate | Download | only in utils
      1 # Copyright 2016 The Chromium Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 import os
      6 
      7 
      8 def MergeFiles(dest_file, source_files):
      9   """Merge list of files into single destination file.
     10 
     11   Args:
     12     dest_file: File to be written to.
     13     source_files: List of files to be merged. Will be merged in the order they
     14         appear in the list.
     15   """
     16   if not os.path.exists(os.path.dirname(dest_file)):
     17     os.makedirs(os.path.dirname(dest_file))
     18   try:
     19     with open(dest_file, 'w') as dest_f:
     20       for source_file in source_files:
     21         with open(source_file, 'r') as source_f:
     22           dest_f.write(source_f.read())
     23   except Exception as e:  # pylint: disable=broad-except
     24     # Something went wrong when creating dest_file. Cleaning up.
     25     try:
     26       os.remove(dest_file)
     27     except OSError:
     28       pass
     29     raise e
     30 
     31 
     32