summaryrefslogtreecommitdiff
path: root/tools/hiddenapi/merge_csv.py
diff options
context:
space:
mode:
authorBill Peckham <bpeckham@google.com>2018-11-05 17:12:23 -0800
committerBill Peckham <bpeckham@google.com>2018-11-05 17:12:23 -0800
commitba167de93776a7e5d1b347d1ee646e161cf24ce5 (patch)
treef1ced04b88bd977af08011e6c7e4124ebe8aa293 /tools/hiddenapi/merge_csv.py
parentf893260618712d3894d1279e27ee121d4be8817f (diff)
parent828551df83149d4b5754757d8b2dc36f55f24cad (diff)
Merge QP1A.181022.001
Change-Id: I0e200ff664739f0bce5a55806ac4fc95fbbff52d
Diffstat (limited to 'tools/hiddenapi/merge_csv.py')
-rwxr-xr-xtools/hiddenapi/merge_csv.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/tools/hiddenapi/merge_csv.py b/tools/hiddenapi/merge_csv.py
new file mode 100755
index 000000000000..48c07553ffef
--- /dev/null
+++ b/tools/hiddenapi/merge_csv.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""
+Merge mutliple CSV files, possibly with different columns, writing to stdout.
+"""
+
+import csv
+import sys
+
+csv_readers = [
+ csv.DictReader(open(csv_file, 'rb'), delimiter=',', quotechar='|')
+ for csv_file in sys.argv[1:]
+]
+
+# Build union of all columns from source files:
+headers = set()
+for reader in csv_readers:
+ headers = headers.union(reader.fieldnames)
+
+# Concatenate all files to output:
+out = csv.DictWriter(sys.stdout, delimiter=',', quotechar='|', fieldnames = sorted(headers))
+out.writeheader()
+for reader in csv_readers:
+ for row in reader:
+ out.writerow(row)
+
+