Python ile Cmd veriyi okuyup değerlendirme

Python ile cmd’den okuduğum ping değerini if ile yargılayıp Az çok şeklinde değerlendirmek istiyorum.
Ancak gelen ping değerini nasıl yargılayacağımı bilmiyorum, yardımcı olursanız çok sevinirim. :blush:

Normalde alinan degerin mesela %20 yakinindaysa (.8×n < deger < 1.2×n) iyi, altindaysa cok iyi, iki katindan azsa orta, daha fazlasiysa kotu olabilir mesela.

Evrenin fizik kurallarina aykiri olacak kadar hizliysa da “saldiri altindasiniz”. (Bu ulkede bunu da gorduk.)

Demek istediğim ping değerini yorumlamak değil “if” kullanarak pingin durumunu ayarlamak ancak değeri cmd çıktısından nasıl alacam, işleme dökecem

Cmd ping kodunun çıktısını bir dosya olarak kaydetmek zorunda.Veya OpenCV kütüphanesini kullanarak ekranı işlemek zorunda kalacaksınız ki bu en zor yol.Çıktıyı halledebiliseniz bana ulaşın.Maalesef şu anda bilgisayar basında değilim ve yardımcı olamayacağım.Çıktıyi dosya olarak kaydettikten sonra os kütüphanesi ile işleyebilirsiniz.Eğer kodları şöyle olmalı:

if ping > 30ms < 50ms:
     print("Orta Seviye Ping")

if ping<30ms:
    print("Düsük Ping")

if ping>50ms:
    print("Yüksek Ping")

Yarın sorununuzu çözebilirim belki ama şu an en fazla bunları yazarak yardımcı olabilirim.Ayrıca python ile kaç kere ping ölçeceginizini dahi ayarlayabilirsiniz.Belki oto ping kontrolcüsü olur :slight_smile:

10 kere Youtube pinginj ölçmek için:

ping -n 10 www.youtube.com

1 Beğeni

Aslında subprocess ile çalıştırır ve çıktıyı ondan alabilir. Bunun için subprocess.check_output("cmd") veya subprocess.run("cmd", capture_output=True) komutlarını kullanabilir.

Burada açıklaması var.

1 Beğeni

Zaten “yorumlamak” degil “yargilamak” demistin, ben de o yuzden bir yargi sistemi gelistirdim ornek olsun diye.

Anladim ki degeri islemek istiyorsun. O zaman string fonksiyonlarina veya belki regular expression’lara bakman lazim.

Bunu anlamadim

Burada aldigini soylememis miydin? :

Yukarıda @throwaway1 demek istediğimi anlamış kendisinin yazısından amacımı anlayabilirsiniz :upside_down_face:

1 Beğeni

“Normalde CMD’de calistirdigim bir komutu Python programim icinden calistirip ciktisini Python programimda bir degisken olarak almak istiyorum” mu?

https://docs.python.org/3/library/subprocess.html#subprocess.Popen

Daha spesifik cevabi @Wyren vermis.

@throwaway1’nin dedigi gibi dosyaya kayit veya OCR sart degil, hatta gereksiz zor veya komplike olabilir. (Gerci yeni baslayan biri icin komuta >foo ekleyip foo dosyasini islemek daha kolay da olabilir.)

3 Beğeni

@aib @throwaway1 @Wyren sizden bu bilgiyi istememin sebebi aslında Python ve Arduino ile beraber kullanmak
Arduinoya bağlı bir ledi pythondan yazdığım kod ile ping değerine göre yakıp söndürmek istiyorum
ancak bazı sıkıntılarım oldu
aşşağıya bıraktığım kod satırı bitmiş hali değil ve inputlar sadece test etmek için varlar
Ledi ise daha ping değerine bağlamadım.

    import serial
    import time
    import os
    import sys
    import io
    stringIO = io.StringIO()
    sys.stdout = stringIO
    os.system('ping www.google.com')
    print(stringIO.getvalue())

        arduino=serial.Serial('COM4', 9600)
        time.sleep(2)


    while True:
        print("Ping ölçülsünmü?(Y/N):")
        a = input()
        if a == "n":
            print("çıkışş yapılıyor...")
            break
        elif a == "y":
            dosya = open("ping.txt", "w+")
            yazı = os.system('ping www.google.com')
            dosya.write(yazı)
            dosya.close()


    datafromUser=input()

    if datafromUser == '1':
            arduino.write(b'1')
            print("LED  turned ON")
    elif datafromUser == '0':
            arduino.write(b'0')
            print("LED turned O")   

şuanki sorunum okuduğum ping değerini txt dosyasına yazdıramıyor oluşum

alt taraftaki

datafromUser=input()
kısmından sonraki arduino ile led kontrolü o kısmı daha programa dahil etmedim

Arduino için C dilleri veya Arduino’nun kendi dili daha mantıklı bir seçim olacaktır.Maalesef cmd ile python arasında hiç uygulama geliştirmedim ve yardımcı olamayabilirim…

Cok normal, cunku komut ciktisini almanin yolu bu degil.

Burada sorunu cevaplayan uc kisinin soylediklerinden herhangi bir tanesini yapmayi deneyerek (veya neden yapmayi reddettigini aciklayarak) devam etmelisin.

1 Beğeni