我想替换我的csv文件的第一行。 csv文件由打开其他csv文件并读取某些列的脚本生成。 它看起来像
TimeStamp;Value;Value; ...
2014/08/04 21:00:53.575;0.168889;1.146; ...
2014/08/04 21:01:23.590;0.168889;1.138; ...
2014/08/04 21:01:53.595;0.17;1.154; ...
2014/08/04 21:02:23.585;0.168889;1.205; ...
我想替换第一行(Timestamp; Value; Value),并将名称保存在列表中。
我想要的输出应该是
TimeStampfromlist;Firstnamefromlist;Secondnamefromlist; ...
2014/08/04 21:00:53.575;0.168889;1.146; ...
2014/08/04 21:01:23.590;0.168889;1.138; ...
2014/08/04 21:01:53.595;0.17;1.154; ...
2014/08/04 21:02:23.585;0.168889;1.205; ...
我该怎么做?
尝试更具体这是我用来生成csv文件的代码
import csv
import glob
import os, sys
path = "C:/Users/ButoeruG/Desktop/pythonscripts/prova"
dirs = glob.glob('*.csv')
namelist = dirs
print dirs[0]
file1 = dirs[1]
print file1
for file in namelist:
namelist = file.partition("TrendLogExtended_")[2].partition("-Ext).csv")[0]
print namelist
primofile = csv.reader(open(file1, 'rb'), delimiter=";", quotechar='|')
output_rows = []
for row in primofile:
output_rows.append([row[2], row[15]])
for file in dirs:
data = csv.reader(open(file, 'rb'), delimiter=";", quotechar='|')
column = []
for idx,row in enumerate(data):
output_rows[idx].append(row[15])
with open("provaoutput.csv", 'wb') as f:
writer = csv.writer(f, delimiter=';')
for row in output_rows:
writer.writerow(row)
现在重点是,当我写行[15]时,我只是从文件中复制一个看起来像这样的列:
Value;
1,956;
1;054;
1,456;
我想用我在名单中保存的部分文件名替换值。
答案 0 :(得分:2)
您可以使用csv
模块,但此逻辑可以满足您的需求。
l = ["TimeStampfromlist","Firstnamefromlist","Secondnamefromlist"]
with open("in.csv", 'r') as data_file:
lines = data_file.readlines()
lines[0]= ":".join(l)+"\n" # replace first line, the "header" with list contents
with open("in.csv", 'w') as out_data:
for line in lines: # write updated lines
out_data.write(line)
答案 1 :(得分:1)
一般方法是打开文件进行读取,跳过旧标题行,打开目标文件进行写入,写入新标题行,然后复制文件的其余部分。最后将新文件重命名为旧文件。
import os
new_headers = ['TimeStampfromlist', 'Firstnamefromlist', 'Secondnamefromlist']
filename = 'data.csv'
with open(filename, 'r') as lines:
next(lines) # Skip first line.
tmp_filename = filename + '.tmp'
with open(tmp_filename, 'w') as out_file:
out_file.write(':'.join(new_headers) + '\n')
out_file.writelines(lines)
os.rename(tmp_filename, filename)