<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">I have several csv file I need to append (vertically). They have different but overlapping headers. For example;</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">

file1 headers ['a', 'b', 'c']</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">file2 headers ['d', 'e']</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">

file3 headers ['c', 'd']</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
Is there a better way than this</div>
<div class="gmail_default"><div class="gmail_default"><font face="verdana, sans-serif">import csv</font></div><div class="gmail_default"><font face="verdana, sans-serif">def merge_csv(fileList, newFileName):</font></div>
<div class="gmail_default">
<font face="verdana, sans-serif">    allHeaders = set([])</font></div><div class="gmail_default"><font face="verdana, sans-serif">    for afile in fileList:</font></div><div class="gmail_default"><font face="verdana, sans-serif">        with open(afile, 'rb') as csvfilesin:</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">            eachheader = csv.reader(csvfilesin, delimiter=',').next()</font></div><div class="gmail_default"><font face="verdana, sans-serif">            allHeaders.update(eachheader)</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">    print(allHeaders)</font></div><div class="gmail_default"><font face="verdana, sans-serif">    with open(newFileName, 'wb') as csvfileout:</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">        outfile = csv.DictWriter(csvfileout, allHeaders)</font></div><div class="gmail_default"><font face="verdana, sans-serif">        outfile.writeheader()</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">        for afile in fileList:</font></div><div class="gmail_default"><font face="verdana, sans-serif">            print('***'+afile)</font></div><div class="gmail_default">

<font face="verdana, sans-serif">            with open(afile, 'rb') as csvfilesin:</font></div><div class="gmail_default"><font face="verdana, sans-serif">                rows = csv.DictReader(csvfilesin, delimiter=',')</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">                for r in rows:</font></div><div class="gmail_default"><font face="verdana, sans-serif">                    print(allHeaders.issuperset(r.keys()))</font></div>

<div class="gmail_default"><font face="verdana, sans-serif">                    outfile.writerow(r)</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div></div><div><div>Vincent Davis</div>

<br></div>
</div>