我想在前一个字符串中添加一个新字符串,例如,我在文件中有一些文本,
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)
但是,我的文件很大,我害怕每次都读完..
使用
end
参数来避免打印换行符。我们仅在打印第一行后预先添加换行符。
print
GFGseek()函数用于改变 文件句柄的位置到给定的特定位置。文件句柄 就像一个游标,它定义了必须从哪里读取数据或 写在文件里。
请访问
网站以获取更多有关查找方法的信息。 当我尝试将光标移动到文本文件的末尾时,出现异常
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")