将一个CSV文件中的特定行添加到另一个CSV文件中,并应用特定条件

问题描述 投票:0回答:2

我有一个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
python csv
2个回答
1
投票

[将新行追加到文件而不是覆盖值,请尝试对文件使用append(a)权限,而不要使用写入(w)。

with open("/path/to/my/output/file.csv", "a+", encoding="utf8") as f_out:

0
投票

现在,我的问题是防止将具有重复ID的记录添加到我的output.csv。如果可能,我将需要覆盖具有匹配ID的记录。

© www.soinside.com 2019 - 2024. All rights reserved.