我在重新附加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'模式改变了总追加风格。