簡體   English   中英

合並 csv 文件並添加標題行 - 垂直

[英]Combine csv files and add header rows - vertically

我有以下代碼組合了幾個 csv 文件並將文件名添加為標題,但水平添加它們:

import os
import csv

dir_base = r'H:\apps\xp\Desktop\localrepo\Temp'
dir_name = '-test2'
output_name = 'output.csv'

path = os.path.join(dir_base, dir_name)
out_path = os.path.join(dir_base, output_name)


def _extend(lines, lineno, line):
    try:
        lines[lineno].extend(line)
    except IndexError:
        lines.append(line)


def main():
    lines = []

    # read and generate new file
    for root, dirs, files in os.walk(path):
        for f in files:
            with open(os.path.join(root, f), 'r') as csvfile:
                f_in = csv.reader(csvfile)
                for lineno, line in enumerate(f_in, start=1):
                    if lineno == 1:
                        header = [''] * len(line)
                        header[0] = f
                        _extend(lines, 0, header)
                    _extend(lines, lineno, line)

    # print new file
    with open(out_path, 'w', newline='\n') as csvfile:
        csv.writer(csvfile).writerows(lines)


if __name__ == '__main__':
    main()

這實現了以下輸出: 在此處輸入圖片說明

但我想要它垂直。 我怎樣才能做到這一點 ?

參考資料: 這個

我設法使用以下腳本垂直合並結果:

def combine_vertically(curr_path, sub):
    with open('%s.csv' % sub, 'w') as wf:
        for subdir, dirss, files in os.walk(curr_path):
            if 'error_metrics_csv' in dirss:
                wf.write("\n")
                wf.write(subdir.split('\\')[-2])
                wf.write("\n")

                # csv_files.append(os.path.join(subdir, 'error_metrics_csv'))
                ptf = os.path.join(subdir, 'error_metrics_csv')
                file = os.path.join(ptf, 'errors.csv')
                with open(file) as rf:
                    for line in rf:
                        if line.strip():  # if line is not empty
                            if not line.endswith("\n"):
                                line = "\n"
                                # line = str(subdir.split('\\')[-1])  "\n"
                            wf.write(line)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM