Python - 使用csv模块重写后CSV文件为空

时间:2016-12-02 15:29:37

标签: python python-3.x csv

我尝试使用Python重写csv文件中的特定单元格。

但是,每当我尝试修改csv文件的某个方面时,csv文件最终都会被清空(文件内容变为空白)。

最小代码示例:

import csv
ReadFile = open("./Resources/File.csv", "rt", encoding = "utf-8-sig")
Reader = csv.reader(ReadFile)
WriteFile = open("./Resources/File.csv", "wt", encoding = "utf-8-sig")
Writer = csv.writer(WriteFile)
for row in Reader:
    row[3] = 4
    Writer.writerow(row)
ReadFile.close()
WriteFile.close()

' FILE.CSV'看起来像这样:

1,2,3,FOUR,5
1,2,3,FOUR,5
1,2,3,FOUR,5
1,2,3,FOUR,5
1,2,3,FOUR,5

在这个例子中,我试图改变四个'到' 4'。

运行此代码后,csv文件将变为空。

到目前为止,我唯一能找到的与此相关的唯一问题是this one,它似乎没有处理重写csv文件中的特定单元格,而是处理新的行到csv文件。

我非常感谢任何阅读此内容的人提供的任何帮助。

2 个答案:

答案 0 :(得分:2)

当您使用w选项打开编写器时,它将删除内容并重新开始写入文件。因此,在您开始阅读时,该文件为空。

尝试写入另一个文件(如FileTemp.csv),并在程序结束时将FileTemp.csv重命名为File.csv。

答案 1 :(得分:2)

The following should work:

import csv

with open("./Resources/File.csv", "rt", encoding = "utf-8-sig") as ReadFile:
    lines = list(csv.reader(ReadFile))

with open("./Resources/File.csv", "wt", encoding = "utf-8-sig") as WriteFile:
    Writer = csv.writer(WriteFile)
    for line in lines:
        line[3] = 4
        Writer.writerow(line)