如何编写新的csv文件作为另一个的扩展名?

时间:2019-04-25 09:35:19

标签: python csv

我想向csv文件“ hello.csv”的每一行写入一个新值。 这是每行调整后的时区。


 with open('hello.csv', 'r', encoding="latin-1") as csvfile:
          readCSV = csv.reader(csvfile, delimiter=',')
          list1 = list(readCSV)
          for j in list1:
              dtstr=j[1] #string
              hours, minutes = [int(t) for t in tstr.split(':')]
              dt = datetime.strptime(dtstr, '%Y-%m-%d %H:%M:%S')         +timedelta(hours=hours+4, minutes=minutes)
              with open('helloout.csv', 'w', encoding="latin-1") as outfile:
                    outCSV = csv.writer(outfile,delimiter=',')
                    newline = j + [dt]
                    outCSV.writerow(newline)

使用此代码时,我变成只有一行的csv文件“ helloout.csv”。这是“ hello.csv”的最后一行,新时间位于新列中。我认为它正在覆盖行,但我不知道为什么?

1 个答案:

答案 0 :(得分:2)

访问模式控制着打开的文件中可能的操作类型。它指的是文件打开后将如何使用。为了在现有文件中添加新行,您需要以“添加”模式打开文件,方法是将“ a”或“ ab”设置为模式。

以“ a”模式打开时,写入位置将始终位于文件末尾(附加)。模式参数还有其他排列方式,用于更新(+),截断(w)和二进制(b)模式,但最好以“ a”开头。如果要在文件中查找要插入行的位置,请使用“ r +”。

以下代码在现有文件中附加一个文本:

with open("index.txt", "a") as myfile:
    myfile.write("text appended")

您也可以将文件access_mode“ a +”用于打开以进行读取和写入。如果文件不存在,则创建该文件。流位于文件的末尾。读取的初始文件位置在文件的开头,但输出会附加到文件的结尾。

with open("index.txt", "a+") as myfile:
    myfile.write("New text appended")

如何将新数据附加到新行上?

在将数据写入文件时可以使用“ \ n”。

with open("index.txt", "a") as myfile:
    myfile.write("First Line\n")
    myfile.write("Second Line\n")

您的代码:

with open('hello.csv', 'r', encoding="latin-1") as csvfile:
          readCSV = csv.reader(csvfile, delimiter=',')
          list1 = list(readCSV)
          for j in list1:
              dtstr=j[1] #string
              hours, minutes = [int(t) for t in tstr.split(':')]
              dt = datetime.strptime(dtstr, '%Y-%m-%d %H:%M:%S')         +timedelta(hours=hours+4, minutes=minutes)
              with open('helloout.csv', 'a', encoding="latin-1") as outfile:
                    outCSV = csv.writer(outfile,delimiter=',')
                    newline = j + [dt]
                    outCSV.writerow(newline)