我正在寻找代码的解决方案。我需要删除一个使用python写入文件的部分,这里的块是5行的例子。
Numberplate: BN30CWS
Time In: Time In: 11:11:3
Time Out: Time In: 11:11:51
Speed: Your Speed: 48MPH
Was this vechile speeding?: No
(没有间隙)
所以,如果我输入BN30CWS
我希望从文件中删除这5行(fileDocStandard)请帮助,我已经尝试将此工作代码制作4小时了,这就是我想出的但它只删除1行并且不会删除孔块
def deldata():
file = open(fileDocStandard, "r" )
array = []
for line in file:
array.append(line)
file.close()
for i in range(len(array)):
print (array[i])
let = input("Please enter the plate you want to delete ")
let = let.upper()
for i in range(len(array)):
arrayitem = array[i]
if (arrayitem[0]) == (let):
del (array[i])
break
file = open(fileDocStandard, "w")
file.close()
file = open(fileDocStandard, "a")
for i in range(len(array)):
file.write(array[i])
file.close()
任何人都能看到这个问题,可以帮助我最终完成这个任务吗?
答案 0 :(得分:0)
您可以阅读自己的行,直到找到BN30CWS
所在的行。然后使用itertools.islice
传递下一行5并在新文件中写下你的行:
from itertools import islice
with open(fileDocStandard) as f,open(newfile) as out:
for line in f:
if 'BN30CWS' in f:
f=islice(f,5,None)
out.write(line)
如果您想覆盖该文件,可以使用tempfile
:
with tempfile.NamedTemporaryFile(delete=False) as outfile:
with open(fileDocStandard) as f:
for line in outfile:
if 'BN30CWS' in line:
outfile=islice(outfile,5,None)
out.write(line)
os.rename(outfile.name, fileDocStandard)