2016-10-19 3 views
-1

他のデータのうちDEST ADDRとNEXT HOPアドレス列のみを取得するのを手伝ってください。私が試してみました何pythonを使用してテキストファイルの特定の列からデータを取得し、コマンドプロンプトで表示する

DEST ADDR   NEXT HOP   IFACE SN METRIC QLEN  

c0:4a:00:cf:65:d4 c0:4a:00:cf:65:d4 wlan1  115615 23 0 

e8:de:27:77:7f:d9 e8:de:27:77:7f:d9 wlan1  626813 61 0 

e8:de:27:77:56:87 e8:de:27:77:56:87 wlan1  196910 1261 0 
e8:de:27:77:56:7e e8:de:27:77:56:7e wlan1  662029 46 0 

e8:de:27:77:6b:72 e8:de:27:77:7f:d9 wlan1 601792 198 0 

c0:4a:00:9a:6e:fa c0:4a:00:9a:6e:fa wlan1  6245 21 0 
[email protected]:~# iw 
Station c0:4a:00:cf:65:d4 
inactive time: 
expected throughput: 
Station e8:de:27:77:7f:d9 
inactive time: 
expected throughput: 
Station e8:de:27:77:6a:91 
inactive time: 
[email protected]:~# iw 

:あなたは内側のループでファイル(openfile)の全体を消費している

DEST ADDR    NEXT HOP 
c0:4a:00:cf:65:d4 c0:4a:00:cf:65:d4 
e8:de:27:77:6a:91 e8:de:27:77:56:87 
e8:de:27:77:7f:d9 e8:de:27:77:7f:d9 
e8:de:27:77:56:87 e8:de:27:77:56:87 
e8:de:27:77:7f:2b e8:de:27:77:7f:d9 
e8:de:27:77:56:7e e8:de:27:77:56:7e 
e8:de:27:77:6b:72 e8:de:27:77:7f:d9 
c0:4a:00:9a:6e:fa c0:4a:00:9a:6e:fa 
[email protected]:~# iw 
Station c0:4a:00:cf:65:d4 
inactive time: 
expected throughput: 
Station e8:de:27:77:7f:d9 
inactive time: 
expected throughput: 
Station e8:de:27:77:6a:91 
inactive time: 
[email protected]:~# iw 
DEST ADDR 
e8:de:27:77:6b:72 e8:de:27:77:6b:72 
e8:de:27:77:56:7e e8:de:27:77:56:7e 
c0:4a:00:cf:65:d4 e8:de:27:77:6a:91 
e8:de:27:77:7f:2b e8:de:27:77:6a:91 
e8:de:27:77:7f:d9 c0:4a:00:9a:6e:fa 
e8:de:27:77:6a:91 e8:de:27:77:6a:91 
c0:4a:00:9a:6e:fa c0:4a:00:9a:6e:fa 
e8:94:f6:67:c6:ce e8:de:27:77:6a:91 

答えて

0

:私が得たもの

with open("output.txt") as openfile: 
    for line in openfile: 
     for part in line.split(): 
      if "DEST" in part: 
       print part+" ADDR",  "    NEXT HOP" 
       for columns in (raw.strip().split() for raw in openfile): 
        if len(columns)>1 and part == "DEST":  
         print columns[0], columns[1] 

代わりlistを通じて一度、すべての反復を強制的にコピーします

with open("output.txt") as openfile: 
    lines = list(openfile) # copy the file 
    for line in lines: 
     for part in line.split(): 
      if "DEST" in part: 
       print part+" ADDR",  "    NEXT HOP" 
       # now use lines instead of file handle 
       for columns in (raw.strip().split() for raw in lines): 
        if len(columns)>1 and part == "DEST":  
         print columns[0], columns[1] 

コードの残りの部分はそう思われる正しいですが、それは、最適化が必要になると仮定して、です。それについてのコードレビューでお会いしましょう。

関連する問題