在python中的文件行之间插入文本

时间:2015-07-07 06:16:43

标签: python io insert tokenize writetofile

我有一个目前正在使用

阅读的文件
fo = open("file.txt", "r")

然后通过

file = open("newfile.txt", "w")
file.write(fo.read())
file.write("Hello at the end of the file")
fo.close()
file.close()

我基本上将文件复制到新文件,但也在新创建的文件末尾添加一些文本。我怎么能插入那条线,在由空行分隔的两条线之间?即:

line 1 is right here
                        <---- I want to insert here
line 3 is right here

我可以通过\n这样的分隔符为新行标记不同的句子吗?

3 个答案:

答案 0 :(得分:5)

首先,您应该使用open()方法加载文件,然后应用.readlines()方法,该方法在"\n"上拆分并返回一个列表,然后通过插入更新字符串列表列表之间的新字符串,然后使用new_file.write("\n".join(updated_list))

简单地将列表的内容写入新文件

注意:此方法仅适用于可以在内存中加载的文件。

with open("filename.txt", "r") as prev_file, open("new_filename.txt", "w") as new_file:
    prev_contents = prev_file.readlines()
    #Now prev_contents is a list of strings and you may add the new line to this list at any position
    prev_contents.insert(4, "\n This is a new line \n ")
    new_file.write("\n".join(prev_contents))

答案 1 :(得分:1)

建议不要使用

readlines(),因为它会将整个文件读入内存。它也不需要,因为您可以直接迭代文件。

以下代码将在第2行插入Hello at line 2

with open('file.txt', 'r') as f_in:
    with open('file2.txt','w') as f_out:
        for line_no, line in enumerate(f_in, 1):
            if line_no == 2:
                f_out.write('Hello at line 2\n')
            f_out.write(line)

请注意使用with open('filename','w') as filevar成语。这消除了对显式close()的需要,因为它在块结束时自动关闭文件,更好的是,即使存在异常,也会执行此操作

答案 2 :(得分:0)

对于大文件

with open ("s.txt","r") as inp,open ("s1.txt","w") as ou:
    for a,d in enumerate(inp.readlines()):
        if a==2:
            ou.write("hi there\n")
        ou.write(d)