在python文件末尾添加字符串

在python文件末尾添加字符串,python,Python,澄清: 因此,如果我的文件有10行: 第一行是标题,所以我想在第一行末尾附加一些文本 然后我有一个包含9个元素的列表 我想阅读该列表,并在每行末尾附加相应的元素 所以基本上把[0]列到第二行,把[1]列到第三行,依此类推 我有一个用逗号表示的文件。 大概是这样的: A,B,C 0.123,222,942 ...... A,B,C,D #append "D" just once 0.123,222,942,99293 ............ 现在我想做这样的事情: A,B,C 0.1

澄清: 因此,如果我的文件有10行: 第一行是标题,所以我想在第一行末尾附加一些文本

然后我有一个包含9个元素的列表

我想阅读该列表,并在每行末尾附加相应的元素

所以基本上把[0]列到第二行,把[1]列到第三行,依此类推


我有一个用逗号表示的文件。 大概是这样的:

A,B,C
0.123,222,942
......
A,B,C,D #append "D" just once
0.123,222,942,99293
............   
现在我想做这样的事情:

A,B,C
0.123,222,942
......
A,B,C,D #append "D" just once
0.123,222,942,99293
............   
这个“D”实际上保存在一个列表中,所以我有这个“D” 我该怎么做?我是说我知道那种天真的方式。 比如,通过每一行,做一些类似的事情

string += str(list[i])

基本上,我如何以pythonic的方式在文件末尾添加内容:)

只需创建一个新文件:

data = ['header', 1, 2, 3, 4]

with open("infile", 'r') as inf, open("infile.2", 'w') as outf:
    outf.writelines('%s,%s\n' % (s.strip(), n) for s, n in zip(inf, data))
如果要“更新”输入文件,只需在以后重命名新文件即可

import os
os.unlink("infile")
os.rename("infile.2", "infile")

只需创建一个新文件:

data = ['header', 1, 2, 3, 4]

with open("infile", 'r') as inf, open("infile.2", 'w') as outf:
    outf.writelines('%s,%s\n' % (s.strip(), n) for s, n in zip(inf, data))
如果要“更新”输入文件,只需在以后重命名新文件即可

import os
os.unlink("infile")
os.rename("infile.2", "infile")
简单回答:使用

长答覆:

import csv

newvalues = [...]

with open("path/to/input.csv") as file:
    data = list(csv.reader(file))

with open("path/to/input.csv", "w") as file:
    writer = csv.writer(file)
    for row, newvalue in zip(data, newvalues):
        row.append(newvalue)
        writer.writerow(row)
当然,这取决于文件中的行和
newvalues
的长度是否相同。如果不是这样,您可以使用类似的方法用给定的值填充多余的行

如果您对不同的文件执行此操作,我们可以更轻松地执行此操作:

import csv

newvalues = [...]

with open("path/to/input.csv") as from, open("path/to/output.csv", "w") as to:
    reader = csv.reader(from)
    writer = csv.writer(to)
    for row, newvalue in zip(reader, newvalues):
        row.append(newvalue)
        writer.writerow(row)
这还具有不将整个文件读入内存的优点,因此对于非常大的文件,这是一个更好的解决方案。

简短回答:使用

长答覆:

import csv

newvalues = [...]

with open("path/to/input.csv") as file:
    data = list(csv.reader(file))

with open("path/to/input.csv", "w") as file:
    writer = csv.writer(file)
    for row, newvalue in zip(data, newvalues):
        row.append(newvalue)
        writer.writerow(row)
当然,这取决于文件中的行和
newvalues
的长度是否相同。如果不是这样,您可以使用类似的方法用给定的值填充多余的行

如果您对不同的文件执行此操作,我们可以更轻松地执行此操作:

import csv

newvalues = [...]

with open("path/to/input.csv") as from, open("path/to/output.csv", "w") as to:
    reader = csv.reader(from)
    writer = csv.writer(to)
    for row, newvalue in zip(reader, newvalues):
        row.append(newvalue)
        writer.writerow(row)

这还具有不将整个文件读入内存的优点,因此对于非常大的文件,这是一个更好的解决方案。

请澄清“文件末尾”是什么意思-通常我认为您的意思是“文件末尾”,但是您的示例似乎显示了在文件中特定行的末尾追加内容,这是一个非常不同的问题。另外,张贴您已经尝试过的代码。因此,您不想将其附加到文件的结尾,您希望在文件中找到该字符串并附加一个“D”(或任何您想要的字符串)?嗨,基本上是每行的结尾。因此,如果我在一个文件中有20行,我将有一个len19的列表。第一行是标题,剩下的19行,我想从列表中读取,并在相应的行中添加相应的元素,其中代码< > 99293 < /代码>来自何处?噢,考虑重写你的问题/标题,以反映这一点,这不是很清楚,请澄清你所说的“在文件末尾”是什么意思——通常我认为你的意思是“在文件末尾”,但你的示例似乎显示了在文件中特定行的末尾添加内容——这是一个非常不同的问题。另外,张贴您已经尝试过的代码。因此,您不想将其附加到文件的结尾,您希望在文件中找到该字符串并附加一个“D”(或任何您想要的字符串)?嗨,基本上是每行的结尾。因此,如果我在一个文件中有20行,我将有一个len19的列表。第一行是标题,剩下的19行,我想从列表中读取相应的行,并在相应的行中添加相应的元素,其中代码< 99293 > /代码>来自何处?哦,考虑重写你的问题/标题,以反映这一点,这不是很清楚。