Python 2.7 Python 2.7-在关闭文件之前将文本插入文件
我正在将一些文本写入文件:Python 2.7 Python 2.7-在关闭文件之前将文本插入文件,python-2.7,Python 2.7,我正在将一些文本写入文件: import codecs outfile=codecs.open("c:/temp/myfile.sps","w+","utf-8-sig") #procedures for creating the text_to_write outfile.write (text_to_write) outfile.close() 现在,我想做的是在文件中插入一个额外的文本,总是在某一行,比如说第10行,但是这个额外的文本只有在完成所有创建文本的过程后才是最终的。因此,第10
import codecs
outfile=codecs.open("c:/temp/myfile.sps","w+","utf-8-sig")
#procedures for creating the text_to_write
outfile.write (text_to_write)
outfile.close()
现在,我想做的是在文件中插入一个额外的文本,总是在某一行,比如说第10行,但是这个额外的文本只有在完成所有创建文本的过程后才是最终的。因此,第10行插入附加文本的代码应该是最后一个代码:
是否可以在不关闭文件、重新打开然后再次保存的情况下执行此操作?
,但我想避免。我在找这样的东西:
import codecs
outfile=codecs.open("c:/temp/myfile.sps","w+","utf-8-sig")
#procedures for creating the text_to_write
outfile.write (text_to_write)
#code for inserting additional text at line 10
outfile.close()
由于您不知道插入点的确切位置(以字节为单位),因此需要读取文件内容的行,在第10行之后插入附加文本,然后再次写入文件 注意:Python2+3打开文件的方法是使用io模块而不是编解码器模块 例如,您需要编写以下文本和其他文本: 您可以打开该文件进行读写。如果文件不存在,则创建该文件 存在,否则将被截断。该流位于 文件的开头
with io.open("file.txt", mode="w+", encoding="utf-8-sig") as f:
f.write(text_to_write)
f.seek(0)
lines = f.readlines()
lines[10:10] = additional_text.splitlines(keepends=True)
f.seek(0)
f.writelines(lines)
这个解决方案不是很有效,因为你读的是你刚刚写的内容。
您还可以处理内存中的所有内容,然后写入文件
with io.open("file.txt", mode="w+", encoding="utf-8-sig") as f:
f.write(text_to_write)
f.seek(0)
lines = f.readlines()
lines[10:10] = additional_text.splitlines(keepends=True)
f.seek(0)
f.writelines(lines)
结果是:
| 1 | This
| 2 |
| 3 | text
| 4 |
| 5 | contains
| 6 |
| 7 | at
| 8 |
| 9 | least
| 10 |
| ++ | ADDITIONAL
| ++ | TEXT
| 11 | ten
| 12 |
| 13 | lines.
另一个使用内存中列表的解决方案:
lines = text_to_write.splitlines(keepends=True)
lines[10:10] = additional_text.splitlines(keepends=True)
with io.open("file2.txt", mode="w+", encoding="utf-8-sig") as f:
f.writelines(lines)
您可能可以使用seek方法。然而,它是基于字节而不是行的,您可能不想覆盖您已经拥有的内容。