2017-10-04 5 views
0

特定の情報を特定の行に追加するように私のコードで嫌です。なぜ私は分からないのですか?参考のため.write関数は、終了後に元の行に書き戻しません。

、私のコードは次のようになります。

def lookOnMe(fileName): 
import socket 
global HostName 
with open(fileName, 'r+') as f: 
    next(f) 
    for line in f: 
     f.seek(0) 
     print(line) 
     findStop = line.index("|") 
     remainder = line[findStop+2:] 
     findStop = remainder.index("|") 
     ipAdd = remainder[:findStop] 
     ipAdd = "".join(ipAdd.split()) 
     try: 
      HostName = socket.gethostbyaddr(ipAdd) 
     except: 
      HostName = '-' 

     f.write(line.rstrip('\n') + " | " + HostName + '\n') 
     f.read() 

そして、このような入力文字列、:

5558 | 1.000.00.00  | 1.222.0.0/10  | ER | apnic | 2001-07-19 | SOMESTUFF 
+0

これを実行したのは – user993553

+0

にコピーするにはtmpファイルが必要です。ありがとう。 – GarnetSunset

答えて

0

非常にシンプル。

next(f)ステートメントは、ファイル内の最初の行を1行読み込み、何もしません。

次に、初めてfor line in fを実行し、2行目の読み取りを試みます。これは空になります(最初の行の後に改行がある可能性が高いため)。

|の文字またはそのようなものがないため、部分文字列検出で空の行の解析に失敗します。

関連する問題