2016-04-19 13 views
-1

これは、2つのテキストファイルPythonでどのシークモードを使用して上書きせずに書き込むのですか?

1)foo.txtのがありますが

fo = open("foo.txt", "r") 
a = fo.readlines(); 
fo1 = open("write.txt", "w") 
j=len(a) 
print j 
i=0 


while i < j: 

    if (a[i] == "hi\n"): 

     fo1.write('hi\nhow\nare\nyou'); 

     if (a[i] == "hello\n"): 

     fo1.seek(-3, 2) 
     fo1.write('\nalways\nnot\n'); 

     i += 1 


     fo.close() 
     fo1.close() 

私のコードです -

hi 
hello 

2が含まれています)空のファイル

あるwrite.txtそれはチェックa [i]こんにちは、こんにちは、このコードステートメントを実行します

それはHIであるとして、それは-3端からポインタを移動しますますHI を[I]を有していることが確認その後

そこで、write.txtこの

how 
are 
you 

ようになります出力は

How 
are 
always 
not 
you 
ようにする必要があり

fo1.write('\nalways\nnot\n'); 

このコード文を書きます

しかし、私が手電流出力は

How 
are 
always 
not 

である上記の出力は「あなた」を持っているが、私は、追記書き込みモードを試してみました、予想される出力はこの

How 
are 
always 
not 
you 

ある を削除しましたどちらも同じです

だから、どのように上書きせずに書き込むことができますか?

+3

テキストエディタとMicrosoft Wordでの経験から期待されることにもかかわらず、ファイル書き込み用の「挿入モード」はありません。 – user2357112

+0

実際、ドキュメントの下部をキャッシュし、新しいテキストを追加してもう一度貼り付けることをお勧めします。しかし、これは大きなファイルでは遅くなります。 – Rockybilly

答えて

1

問題は、書込みがで、現在位置にが挿入されていると予想されていることです。ファイルの位置を設定すると、その位置で書き込みが開始され、データが上書きされます。

防ぐため上書きが、あなたはまた

fo1.seek(-3, 2) 
end_data = fo1.read() 
fo1.seek(-3, 2) 
fo1.write('\nalways\nnot\n') 
fo1.write(end_data) 

を書いているデータの後にデータを再書き込みする必要がある、あなたはpythonでセミコロンを使用する必要はありません。

+0

ありがとう、それは働いた、あなたは私たちのお尻を救った!ありがとう再び! – Basil

関連する問題