2017-01-03 29 views
0

既存のファイルの新しい行にipを書き込む機能と、存在する場合はファイル内の文字列を削除する機能を別々にしようとしています。現在、私が出ているコードは、このです:python open()でファイル内の文字列を置き換えます。

10.10.10.11 
20.20.20.20 
10.10.10.11 
hi 
(empty line) 

セカンドラン:私は出力があるべきと仮定何

def writeebl(_ip): 
    filepath = "ebl.txt" 
    with open(filepath, mode='a') as ebl: 
     ebl.write(_ip) 
     ebl.write("\n") 


def removeebl(_ip): 
    filepath = "ebl.txt" 
    with open(filepath, mode='r+') as f: 
      readfile = f.read() 
      if _ip in readfile: 
       readfile = readfile.replace(_ip, "hi") 
       f.write(readfile) 

writeebl("10.10.10.11") 
writeebl("20.20.20.20") 
removeebl("20.20.20.20") 

のみ10.10.10.11

まず、実行ファイルの内容を持つファイルです。

10.10.10.11 
20.20.20.20 
10.10.10.11 
hi 
10.10.10.11 
hi 
10.10.10.11 
hi 

これはどのように行うべきか混乱しています。私はいくつかの異なる方法をstackoverflowのいくつかの例に従ってみました、そして今まで私はまだ固執しています。前もって感謝します!

+0

あなたが適切に上書きされていません。参照:http://stackoverflow.com/questions/2424000/read-and-overwrite-a-file-in-python –

答えて

1

あなたは古いコンテンツが更新1を書き込む前に拭き取るので、removeebl機能で再びその内容の全てを書き換える前に、ファイルを切り捨てる必要があります。

... 
if _ip in readfile: 
    readfile = readfile.replace(_ip, "hi") 
    f.seek(0); f.truncate() 
    f.write(readfile) 
+0

まだ私のために働いていない – dobbs

+0

答えが更新されました –

関連する問題