我有一个目前正在使用
阅读的文件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
这样的分隔符为新行标记不同的句子吗?
答案 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)