擅长:python、mysql、java
<p>一个名为gnibbler的用户在另一个线程上发布了类似的内容。</p>
<p>在适当的位置修改文件<strong>,违规行将替换为空格,这样文件的其余部分就不需要在磁盘上乱放。如果修复不长于要替换的行,也可以将行“修复”到位</p>
<p>如果可以更改另一个程序以输出文件偏移量而不是行号,则可以直接将偏移量分配给p,而不必使用for循环</p>
<pre><code>import os
from mmap import mmap
phrase = 'the dog barked'
filename = r'C:\Path\text.txt'
def removeLine(filename, num):
f=os.open(filename, os.O_RDWR)
m=mmap(f,0)
p=0
for i in range(num-1):
p=m.find('\n',p)+1
q=m.find('\n',p)
m[p:q] = ' '*(q-p)
os.close(f)
with open(filename) as myFile:
for num, line in enumerate(myFile, 1):
if phrase in line:
removeLine(filename, num)
print 'Removed at line:', num
</code></pre>