2016-08-11 14 views
-1

私はこのスクリプトを使ってホストのIPアドレスまたは名前を書きました....しかし、Python 3.4.3のコードpingを実行しないでください。私はipを入力することができますが、pingを実行しません....Python 3.4.3:os.systemは私のping "コマンド"を実行しません

私は両方の方法を入力しようとしました。例: "127.0.0.1" または127.0.0.1

それは、Python 2.7で実行されますが、それは、Pythonのより新しいバージョンで作業したい...

私のWindows 7 64ビット

ですあなたは何をお勧めしますか?

import os 
a = input("put the name/ip of the machine you want to ping:\n\n") 
p = "ping -t " 
os.system(p+a) 

私は単にPython 2.7を使用するべきですか?これはうまく動作しますか?

+1

私のために働く。あなたは正しいコードを実行していますか?もしあれば、このコードは2.7で動作しませんし、 'input'とは違う方法で動作するので、3で動作します。 – DeepSpace

+0

プロンプトには何を入力しますか? "127.0.0.1"二重引用符で囲みますか?単純な引用符の間に '127.0.0.1'?あなたがWindows上で+簡単な引用符を使用している場合、それは正常ではありません。そして私は、あなたの例から「もう一度尋ねる」部分を理解することはできません。あなたは本当に走っていますか? –

+1

あなたはどのオペレーティングシステムですか? – napuzba

答えて

1

inputは、私はあなたが単純な引用符の間、あなたの文字列を入力して賭け、それはリターンを評価するのpython 2でのpython 2.7とPython 3

の間で異なっています。 python 3では

raw_inputが行ったように)、それは

ちょうど引用符なしで、あなたの値を入力し、それが動作する文字列を返します。

+0

これは良いキャッチですが、 'ping -t" 127.0.0.1 "も同様です。 – DeepSpace

+0

しかし、私はそれが問題を解決しているかどうかはわかりません。特に "ホスト/ ipに再度質問してください"。私はMVCEを見ていませんでしたが、... –

+0

'ping -t '127.0.0.1'はウィンドウに表示されません。 –

1

popenのは溶液:

from subprocess import Popen, PIPE 
p = Popen(['ping', '-c 1', 'www.google.com'], stdout=PIPE) 
while True: 
    line = p.stdout.readline() 
    if not line: 
     break 
    print(line) 

sh.ping溶液:

import sh 
for line in sh.ping('www.google.com', '-c 1', _err_to_out=True, _iter=True, _out_bufsize=100): 
    print(line) 

os.system溶液:os.system()任意の出力を生成する場合

import os 
os.system('ping -c 1 www.google.com') 

、それが送信されますインタプリタの標準出力ストリーム。

私はオプション-cを使用してパケットを1つだけ送信します。あなたがこのアプローチを使用することができ、コマンド文字列を構築するために :

a = input("put the name/ip of the machine you want to ping:\n\n") 
cmd = 'ping -c 1 %s' % a 
os.system(cmd) 
+0

私はスクリプトを実行するときにホスト/ ipを入力する必要があります – cavernoso

+0

まだ動作していません... – cavernoso

0

は実は、私はそれを試してあきらめ..... を、私はそれをうまく動作する、のpython 2.7で使用します....

ありがとう

関連する問題