Python da output çıktısını değişkene aktarma

Herkese Merhaba, python da azure cli kullanarak hesaba giriş yapmaya çalışıyorum ama çıktı olan kodu alamıyorum bir türlü.
import os
os.system(“az login --use-device-code”)
kodu ile kod geliyor ama işlem tamamlanmadığı için output olarak gözükmüyor aşağıdaki mesaj.


yardımcı olursanız çok makbule geçer.

Subprocess ile epey bir kurcalamadım ama, bu çıktıyı herhangi bir dosyaya aktarmak için ikinci bir program çalıştırmak gerektiği kanısına vardım. Çünkü söz konusu kod geldiğinde cmd üzerinde herhangi bir şey yazamıyorsunuz, Python ile çalıştırdığınızda da sonraki satırlarda yer alan kodlar hiç bir şekilde çalışmıyor. İlla ki bir yöntemi vardır ama benim aklıma görsel işleme geldi. Alınan kodu pyscreenshot ile kaydedip yine başka bir python modülü ile görseli yazıya çevirip, string methodları ile kodu elde edebilirsiniz.

1 Beğeni

subprocess ile ciktiyi takip edebilirsiniz

>>> import subprocess
>>> subprocess.check_output("echo $((34+34))",shell = True)
b'68\n'

linuxta denedim windows icin cikitiyi kontrol edemiyorum ama cok farkli oldugunu sanmam alttaki gibi oldugunu dusunuyorum ama test etmedim

import subprocess
print(subprocess.check_output("az login --use-device-code",shell = True))

output u aldiktan sonra regex ile kod kismini cekebilirsiniz

1 Beğeni

bu şekilde denedim hocam hata veriyor, işlem bitmediği için o mesajı output olarak vermiyor. Yukarıdaki arkadaşın dediği mantıklı geliyor ama görseli yazıya çevirince hata verme ihtimali yüksek olduğu için sağlıklı bir yöntem değil doğrusu.

Hani?

Fonksiyon islem bitmeden donmez, burada bir yanlisin var.

Neler diyorsunuz arkadaslar, API’nin butun olayi boyle sacmaliklarla ugrasmak zorunda kalmamak.

Haklısınız hocam, ama sonuca ulaşmak için her şey mubahtır gibisinden yola çıktım :smiley:

hocam siz denemediniz galiba, gelen warning metnini değişkene aktaramıyoruz ki kodu alabilelim. kodu alıp verdiği url den azure hesabını bağladığımızda fonksiyon bitmiş olacak.

Sorunun ciktinin stderr’a gitmesi oldugunu tahmin ediyorum fakat bir hata mesajindan bahsediyorsun, bir de process bitmeden check_output’un dondugunu soyluyorsun. Bunlarin ikisi de daha ciddi ve ilginc sorunlar.

Hata dediğim kısım kodun geldiği string yer (warning olarak başlıyor :smiley: )
processin bitmesi için o kodu alıp apiye login olmam lazım yoksa process bitmiyor check_output dan yanıt dönmüyor, dönmediği içinde kodu alamıyorum. Sonsuz bir döngü gibi :smiley:

Ahh tamam, anlasildi.

check_output bitmeden donmez, evet. run'a ve Popen'a bakman lazim. stdout veya stderr'de istedigin.

Da ne menem bi seymis bu, bilgisayar tarafindan kullanilabilen bi alternatifi yok mu?

teşekkürler hocam, selenium da kullanmak istemiştim, normalde az login -u username -p password şeklinde de giriş yapılabiliyor yazıyor sitelerinde ama outlook mailli hesap ile hiçbir türlü yapamadım sürekli hata verdi.