我有一个CSV文件,其“ Flag”列的值为0和1。我的目标是将所有值为0的行移动到另一个CSV文件中。该脚本计划每小时运行一次,并将具有“ 0”值的行移动到另一个文件。
到目前为止,我编写了以下代码:
with open("path/to/my/input/file.csv", "rt", encoding="utf8") as f:
reader = csv.DictReader(f, delimiter=',')
with open("/path/to/my/output/file.csv", "a+", encoding="utf8") as f_out:
writer = csv.DictWriter(f_out, fieldnames=reader.fieldnames, delimiter=",")
writer.writeheader()
for row in reader:
if row['flag'] == '0':
writer.writerow(row)
在下面的@Raghvendra帮助下,通过在代码中添加'a +',我可以将行添加到output.csv文件中。但是,每次脚本运行时,它将头行添加到我的输出文件中。另外,如何防止添加具有匹配ID的行?是否可以替换我的output.csv文件中ID与input.csv文件中的ID匹配的行,而不是将具有重复ID的行添加到output.csv?
有人可以帮助我吗?提前致谢!
input file.csv:
id date data1 data2 flag
1 2020-03-01 mydata mydata1 0
2 2020-03-02 mydata mydata 1
3 2020-03-03 mydata mydata1 0
[将新行追加到文件而不是覆盖值,请尝试对文件使用append(a
)权限,而不要使用写入(w
)。
with open("/path/to/my/output/file.csv", "a+", encoding="utf8") as f_out:
现在,我的问题是防止将具有重复ID的记录添加到我的output.csv。如果可能,我将需要覆盖具有匹配ID的记录。