1

私の意図は、いくつかの基準に一致する特定の行の間にいくつかの行を追加することです (基準は単純ではなく、コードロジックから派生しています)。tell() 関数を使用して、新しい行を配置する場所を取得しました。また、以下のように readlines() を使用して、この位置までのテキスト部分と残りのファイルを 2 つのリストに保存しました。

このようにして、最初のリストに新しい行を追加し、次に 2 番目のリストを追加して、元のファイルにまとめて書き込むことを計画しました。

fp.open("path", "r")
<some logic to find where the new lines are to be inserted>
insertPos = fp.tell()
firstPart = fp.readlines(insertPos)
secondPart = fp.readlines()
firstPart.insert(len(firstPart)+1, newLines)
newContent = firstPart+secondPart)
fp.writelines(newContent)
fp.close()

しかし、問題は、tell() の最初の出力を使用して readlines() が実行されたときに、マージされたリストを配置するときに、ファイル内の正しい行を指していないことです。さらに数行前に移動します。iefirstPart は、insertPos で正確に分割されていません。ここに欠けているものはありますか?どんな助けでも大歓迎です。

4

2 に答える 2

2

ファイルが大きくない場合は、バッファ位置をいじる代わりにこれを行います。

lines = list(open(filename))
i = ... # figure out what line you want to insert before
lines.insert(i,new_line)
open(filename,'w').write('\n'.join(lines))
于 2013-11-07T18:47:02.233 に答える