如何并排附加csv文件并在最后使用python重复相同的文件?

时间:2015-07-08 17:36:26

标签: python csv

我在重新附加csv文件时遇到问题。我必须将它们并排放在第一组中并重复相同的四组。在这里的其他帖子的帮助下,我试图追加它们。但它们会在下一行附加。请帮我解决这个问题。

假设split是一个对所有四个集合都相同的文件:Final file应该是这样的

拆分文件:

vcc temp

1 13

2 15

测量文件1

c i

1 4

2 6

测量文件2

c i

3 7

7 9

测量文件3 .....文件4 ......与上述相同

最终文件应该是这样的:

vcc temp c i

1 13 1 4

2 15 2 6

1 13 3 7 ---这是第二集

2 15 7 9

..... ----适用于所有4个测量文件

我只想为第一组设置标题。

我尝试的代码是这样的:

def appenddata(fin,fin2,finalappend):

    if(flag==1):

        print('Inside If:',flag)
        with open(fin, 'r', newline='') as f:
            r = csv.reader(f)
            dict2 = {row[0]: row[1:] for row in r}

        with open(fin2, 'r', newline='') as f:
            r = csv.reader(f)
            dict1 = OrderedDict((row[0], row[1:]) for row in r)

        result = OrderedDict()
        for d in (dict1, dict2):
            for key, value in d.items():
                result.setdefault(key, []).extend(value)

        with open(finalappend, 'a+', newline='') as f:
            w = csv.writer(f)
            for key, value in result.items():
                w.writerow([key] + value)
        global flag
        flag = 0
        return(f.name)
    else:
        print(flag)
        with open(fin, 'r', newline='') as f:
            r = csv.reader(f)
            header=next(r)
            dict2 = {row[0]: row[1:] for row in r}

        with open(fin2, 'r', newline='') as f:
            r = csv.reader(f)
            header=next(r)
            dict1 = OrderedDict((row[0], row[1:]) for row in r)

        result = OrderedDict()
        for d in (dict1, dict2):
            for key, value in d.items():
                result.setdefault(key, []).extend(value)

        with open(finalappend, 'a', newline='') as f:
            w = csv.writer(f)
            for key, value in result.items():
                w.writerow([key] + value)
        return(f.name)
    flag=1
    num = int(input())
    finalfile=input()
    split = input()  
    for i in range(1,num+1):
        print (r'Enter the input measurement', i ,'file name with path:' )
        measurement = input()
        resultdata = appenddata(split,measurement,finalfile)
        #print ("final result:",resultdata )

我得到的输出是 分裂 Measuremt1 分裂 测量2 分裂 measurement3

非常感谢任何建议和帮助。我认为我在附加部分出错了。让我知道如何完成这项工作。

注意:我使用的是python 3.3 以前我只通过在w模式下打开最终文件来添加一组。但现在因为有4套,我已经将模式改为a。这种'a'模式改变了总追加风格。

0 个答案:

没有答案