2017-09-05 3 views
1

これで、txtファイルを実行し、pingが0に等しい場合、そのコードは 'nslookup'を実行してから続行することになっていますが、ターミナルの最初のものは、入力を待っているかのように>に置かれています。他の例では、私のコードはtxtファイルをうまく走りますが、 'nslookup'を追加すると、最初のものの後で停止し、入力を待ちます。ループを続ける

最後までtxtファイルを循環させる方法はありますか?

私が使用しているコードをHeres私はIPアドレスでルックアップを行うための他の方法があることを知っていますが、私は不可能でない限り、このケースでは 'nslookup'を使用しようとしています。あなたが任意の引数を渡さない場合はnslookup

に引数を渡すのを忘れているため、単純だ

import os 
with open('test.txt','r') as f: 
    for line in f: 
     response = os.system("ping -c 1 " + line) 
     if response == 0: 
       print os.system('nslookup') 
     else: 
       print(line, "is down!") 

答えて

2

は、プログラムは独自のシェルと対話モードで起動します。

L:\so>nslookup 
Default server : mydomain.server.com 
Address: 128.1.34.82 

> 

しかし、os.systemを使用すると、コマンドの出力を取得できません。私はos.system入れイムときのためにあなたはとても代わりにos.systemコマンドの

output = subprocess.check_output(['nslookup',line.strip()]) 
print(output) # or do something else with it 

+0

がOK必要があるでしょう( 'nslookupコマンド{}'。フォーマット(line.strip()))私は、「ファイルを取得 "、line 5、in ValueError:フォーマット内の長さゼロのフィールド名 – Cry2Senpai

+0

面白いことに、それは元の方法で2.7でも動作しますが、システムは実行時に2.6を使用します。極度に役に立つとはいえ、非常に感謝しています。 – Cry2Senpai

関連する問題