2017-12-11 12 views
0

コマンドpingを使用してipホストアクセスをチェックするPython3コードを持っています ip_host.txtには、ip:212.19.24.234と212.19.24.234が含まれています。 私は、コードを実行する場合、私は次のような結果を得る:212.19.24.234: 私はCMDのpingを使用してチェックするとPython3でサーバーにpingを実行する

[ '212.19.24.219 \ nは - - ダウンしている'] [ 'アップです212.19.24.234を'] 212.19.24.219が稼働しています。 私のコードでエラーが見つかりませんか? 私は

import subprocess 
fp = open('ip_host.txt') 
for ip in fp.readlines(): 
    response = subprocess.Popen(["ping.exe",ip]) 
    response.wait() 
    result = [] 
    if response.poll(): 
     res = (ip + " - is down") 
    else: 
     res = (ip + " - is up") 

    result.append(res) 
    print(result) 
+0

ここで最大の問題は 'ip'に改行があることです。 –

+0

それに加えて、特にファイルIOを扱うときは、コンテキストマネージャの使用を検討する必要があります。 –

答えて

0
  1. (ここで最も重要な問題)ipファイルからの行を保持する助けてください。これには、str.strip/str.rstripを使用して削除する必要がある改行文字が含まれます。

  2. ファイルを開くときにwith...asを使用して、後で閉じることを心配する必要がなくなります。

with open('ip_host.txt') as fp: 
    for line in fp: 
     res = subprocess.Popen(["ping.exe", line.rstrip()]) 
     ... 

striprstripの唯一の違いは、後者のみ末尾の空白を削除することです。先頭に余白がある場合は、stripを使用してください。

関連する問題