初始化文件如下:
1;2019-03-20 22:43:00.934775;200;3;60;0.05;0.05;20_File_18289094.csv;2;
2;2019-03-20 22:46:42.582782;200;3;60;0.05;0.05;21_File_16565692.csv;2;
3;2019-03-20 22:46:52.971144;200;3;60;0.05;0.05;22_File_22368393.csv;
我想读取和删除同一文件的特定行,我的目标是找到一行的第一列,然后将其完全删除。到目前为止,这是我的代码,但只是将;
替换为,
1,2019-03-20 22:43:00.934775,200,3,60,0.05,0.05,20_File_18289094.csv,2,
2,2019-03-20 22:46:42.582782,200,3,60,0.05,0.05,21_File_16565692.csv,2,
3,2019-03-20 22:46:52.971144,200,3,60,0.05,0.05,22_File_22368393.csv,2,
with open(file_master) as inf:
reader = csv.reader(inf.readlines(), delimiter=';')
with open(file_master, 'w') as outf:
writer = csv.writer(outf)
for line in reader:
if str(line[0]) == '1':
writer.writerow(line)
break
else:
writer.writerow(line)
writer.writerows(reader)
答案 0 :(得分:1)
这完成了工作。
使用r+
标志打开文件,该文件允许进行读取和写入。
outdata
是您的帖子“清理”内容的占位符列表。
在这种情况下,通过循环检查第一个值是否与"1"
相匹配,否则将其添加到将要写出的日期。
seek
将您带回到文件的开头(否则您将获得类似行为的追加)。
编写您的清理内容。
truncate
删除之前尚未写入的数据(否则,您将获得第2、3、3行)。
with open("file_master", 'r+') as outf:
outdata = []
for line in outf.read().split("\n"):
line_items = line.split(";")
if line_items[0] == "1":
pass
else:
outdata.append(",".join(line_items))
outf.seek(0)
outf.write("\n".join(outdata))
outf.truncate()