如何更换我目前的线路?

时间:2013-04-25 13:45:02

标签: python

我有一个像这样的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.替换该行。我想写什么?

2 个答案:

答案 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)