2016-08-11 1 views
-1

Ich machte dieses Skript, um nur die IP oder den Namen des Hosts nach dem Klicken zu schreiben .... aber in Python 3.4.3 der Code einfach führe den Ping nicht aus; Ich kann die IP eingeben, aber es läuft nicht der Ping ....Python 3.4.3: os.system führt nicht mein Ping "Befehl"

Ich habe versucht, beide Wege zu betreten. Bsp .: "127.0.0.1" oder 127.0.0.1

es in Python 2.7, laufen aber möchte es in einer neueren Version von Python arbeiten ...

Mein Windows 7 64 Bit

Was empfiehlst du mir?

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

Sollte ich einfach nur Python 2.7 verwenden, was läuft es gut ???

+1

Funktioniert für mich. Sind Sie sicher, dass Sie den richtigen Code ausführen? Wenn überhaupt, ist es sinnvoller, dass dieser Code unter 2.7 nicht funktioniert und an 3 arbeitet, weil die Eingabe anders funktioniert. – DeepSpace

+0

Was geben Sie genau bei der Eingabeaufforderung ein? "127.0.0.1" zwischen doppelten Anführungszeichen? '127.0.0.1' zwischen einfachen Anführungszeichen? Wenn Sie mit einfachen Anführungszeichen unter Windows arbeiten, funktioniert das nicht. Und ich kann den Teil "Fragen Sie nicht" aus Ihrem Beispiel nicht verstehen. Ist das alles, was Sie wirklich laufen? –

+1

in welchem ​​Betriebssystem sind Sie? – napuzba

Antwort

1

input unterscheidet zwischen Python 2.7 und Python 3.

In Python 2 es die Rückkehr auswertet, ich wette, dass Sie Ihre Zeichenfolge zwischen einfachen Anführungszeichen eingeben.

In Python 3 ist es eine Zeichenfolge zurückgibt (wie raw_input tat)

einfach Ihren Wert ohne Anführungszeichen eingeben und es wird funktionieren.

+0

Das ist ein guter Haken, aber 'ping -t" 127.0.0.1 "' funktioniert auch. – DeepSpace

+0

Aber ich bin mir nicht sicher, dass es die Frage löst, besonders die "und frage den Host/ip erneut". Nun, ich habe die MVCE nicht gesehen, obwohl ... –

+0

'ping -t '127.0.0.1'' nicht auf Windows. –

1

Popen Lösung:

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 Lösung:

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 Lösung:

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

os.system() Wenn keine Ausgabe erzeugt, wird es auf die gesendet werden Interpreter Standard Ausgabestrom.

Ich verwende die Option -c, um nur ein Paket zu senden. Um eine Befehlsfolge konstruieren Sie diesen Ansatz verwenden:

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

aber ich muss den Host/IP eingeben, wenn ich das Skript – cavernoso

+0

ausführen Noch nicht arbeiten ... – cavernoso

0

Eigentlich gebe ich auf, es zu versuchen ..... ich in Python 2.7 verwenden, die es läuft gut ....

Dank

Verwandte Themen