我有一个像这样的python代码:
with open('myFile') as f:
next(f) # skip first line
for line in f:
items = line.split(';')
if len(items) < 2:
# now I want to replace the line with s.th. that i write
如何用s.th.替换该行。我想写什么?
答案 0 :(得分:6)
使用fileinput
模块的就地功能。请参阅fileinput上的 可选的就地过滤 部分。
像这样:
import fileinput
import sys
import os
for line_number, line in enumerate(fileinput.input('myFile', inplace=1)):
if line_number == 0:
continue
items = line.split(';')
if len(items) < 2:
sys.stdout.write('blah' + os.linesep)
else:
sys.stdout.write(line)
答案 1 :(得分:1)
以r+
模式打开文件,先读取列表中的内容,然后在截断后将新数据写回文件。
&#39; R +&#39;打开文件进行读写
如果文件很大,最好先将其写入新文件,然后重命名。
with open('myFile','r+') as f:
data=f.readlines()[1:]
f.truncate(0) #this will truncate the file
f.seek(0) #now file pointer goes to start of the file
for line in data: #now write the new data
items = line.split(';')
if len(items) < 2:
# do something here
else:
f.write(line)