如何通过python在txt中的上一行后面添加字符串?

问题描述 投票:0回答:2

我想在前一个字符串中添加一个新字符串,例如,我在文件中有一些文本,

1
2
3

现在我想在最后一句话后面添加一个新字符串,而不是新行

1
2
3hello

以及类似的代码,

file_convt = open("test.txt", "w")
for i in range(0, 3):
    file_convt.write(str(i) + "\n")
file_convt.write("hello")
file_convt.close()

循环函数实际上很复杂,我无法更改它,有没有更好的方法可以在最后一句后面添加新行? 我只知道,

with open(filepath, "w") as fp:
    for line in lines:
        print(line + "#", file=fp)

但是,我的文件很大,我害怕每次都读完..

python
2个回答
2
投票

使用

end
参数来避免打印换行符。我们仅在打印第一行后
预先添加
换行符。 print



0
投票
seek() 方法在 Python 中,

seek()函数用于改变 文件句柄的位置到给定的特定位置。文件句柄 就像一个游标,它定义了必须从哪里读取数据或 写在文件里。

请访问
GFG

网站以获取更多有关查找方法的信息。 当我尝试将光标移动到文本文件的末尾时,出现异常

lines = ['1', '2', '3'] prepend = '' for line in lines: print(f"{prepend}{line}", end='') prepend = "\n" print("hello", end='')

所以我只能从文件的开头查找。


文本文件的编码字节之间没有一一对应的关系 以及它们代表的字符,所以eek无法判断跳转到哪里 在文件中移动一定数量的字符。

以上引用自
this

堆栈溢出站点。 这可能不是完整的解决方案,但它有效,希望它能给您一些帮助,以便您可以使用它来解决问题。

UnsupportedOperation: can't do nonzero end-relative seeks

用于获取文件

size
。知道文件大小后我们可以使用os.stat方法去到合适的位置可以高效的修改文件。
seek

输出:

import sys,random, os file_convt = open("test.txt", "w") for i in range(0, 3): file_convt.write(str(i+1) + "\n") file_convt.close() stats = os.stat('test.txt') #print(stats.st_size) with open("test.txt", "r+")as f: f.seek(stats.st_size-1,0) #now our cursor is after 3 and here we can write hello f.write("hello\n")

	
© www.soinside.com 2019 - 2024. All rights reserved.