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

Python 如何将新的csv文件作为另一个文件的扩展名写入?,python,csv,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

我想将一个新值写入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”的最后一行,新列中有新时间。我认为它正在覆盖行,但我不知道为什么?

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

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

以下代码在现有文件中追加文本:

with open("index.txt", "a") as myfile:
    myfile.write("text appended")
您还可以使用文件访问模式“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)

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

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

以下代码在现有文件中追加文本:

with open("index.txt", "a") as myfile:
    myfile.write("text appended")
您还可以使用文件访问模式“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)

带有open('hello out.csv','a',encoding=“latin-1”)
?哦,这应该是一个单词
带有open('hello out.csv','a',encoding=“latin-1”)
?哦,这应该是一个单词,所以我应该在循环之前打开helloout.csv?在循环中我使用helloot.txt?但是我的文件是csv而不是txt,这样行吗?所以我应该在循环之前打开helloout.csv?在循环中我使用helloot.txt?但我的文件是csv文件而不是txt文件,这样行吗?