2

次のような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に置き換える方法。私が書きたいこと?

4

2 に答える 2

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)
于 2013-04-25T13:52:39.863 に答える
1

モードでファイルを開きr+、最初にリストの内容を読み取り、次に切り捨て後に新しいデータをファイルに書き戻すことができます。

「r+」は、読み取りと書き込みの両方でファイルを開きます

ファイルが巨大な場合は、最初にこれを新しいファイルに書き込んでから名前を変更することをお勧めします。

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)
于 2013-04-25T13:58:30.463 に答える