Home | History | Annotate | Download | only in hiddenapi
      1 #!/usr/bin/env python
      2 #
      3 # Copyright (C) 2018 The Android Open Source Project
      4 #
      5 # Licensed under the Apache License, Version 2.0 (the "License");
      6 # you may not use this file except in compliance with the License.
      7 # You may obtain a copy of the License at
      8 #
      9 #      http://www.apache.org/licenses/LICENSE-2.0
     10 #
     11 # Unless required by applicable law or agreed to in writing, software
     12 # distributed under the License is distributed on an "AS IS" BASIS,
     13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14 # See the License for the specific language governing permissions and
     15 # limitations under the License.
     16 """
     17 Merge mutliple CSV files, possibly with different columns, writing to stdout.
     18 """
     19 
     20 import csv
     21 import sys
     22 
     23 csv_readers = [
     24     csv.DictReader(open(csv_file, 'rb'), delimiter=',', quotechar='|')
     25     for csv_file in sys.argv[1:]
     26 ]
     27 
     28 # Build union of all columns from source files:
     29 headers = set()
     30 for reader in csv_readers:
     31   headers = headers.union(reader.fieldnames)
     32 
     33 # Concatenate all files to output:
     34 out = csv.DictWriter(sys.stdout, delimiter=',', quotechar='|', fieldnames = sorted(headers))
     35 out.writeheader()
     36 for reader in csv_readers:
     37   for row in reader:
     38     out.writerow(row)
     39 
     40 
     41