我试图在打开文本文件后删除它,并且不使用f.readlines()或类似的东西将其存储在任何列表变量中。 我没有选择打开文件并将内容存储在变量中并进行一些更改,然后将它们写入另一个文件的操作,或者需要某种操作来打开文件并将其再次存储在列表变量中并进行一些更改并将它们存储回文件中。该文件正不断地被其他程序附加,所以我不能做任何事情。
我正在使用f.seek()将指针重置为文件的开头,并使用f.readline()和f.tell()来了解第一行的长度。之后,我尝试使用while循环将每个字符替换为空白。
origin https://github.com/repo (fetch)
origin https://github.com/repo (push)
代码运行正常,但是有一个我无法弄清楚的问题, 例如,如果这是原始文件
pos=0
eol = 0
ll=0
with open('file1.txt','rb+') as f:
f.seek(pos,1) #position at the beginning of the file
print(f.readline()) #reading the first line
pos = f.tell() #storing the length of first line
#the while loop will run from 0 to pos and replace every character with blank space
while eol != pos:
with open('file1.txt','rb+') as f:
f.seek(eol,1)
f.write(b' ')
eol += 1 #incrementing the eol variable to move the file pointer to next character
运行程序后,我的输出是
file1.txt
this is line 1
this is line 2
this is line 3
第一行将被删除,但第二行前面有一堆空白。 也许我在这里错过了一个简单的逻辑。 任何帮助将不胜感激。 谢谢
更新:
如果我正确理解了代码,则更改代码并将其更改为类似代码,而不是b'',而是使用'\ r'作为回车符,结果是这样:
代码:
this is line 2
this is line 3
结果:
while eol != pos-1:
with open('file1.txt','rb+') as f:
f.seek(eol,0)
f.write(b'\r')
eol += 1
执行后
original :
this is line 1
this is line 2
this is line 3
您看到第一行已删除,但后跟'\ r'